解析Java代码中的cURL命令导致错误。

huangapple go评论135阅读模式
英文:

Parsing cURL command from Java code causing an error

问题

  1. 我正在尝试解析一些 cURL 命令:
  2. curl -X POST \
  3. -H "Content-Type: application/json" \
  4. -H "Accept: application/json" \
  5. -H "Authorization: Token token_key" \
  6. -d '{ "query": "query" }' \
  7. https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias
  8. 但是我的版本:
  9. ProcessBuilder pb = new ProcessBuilder(
  10. "curl",
  11. "-X", "\"POST\"",
  12. "-H", "\"Content-Type: application/json\"",
  13. "-H", "\"Accept: application/json\"",
  14. "-H", "\"Authorization: Token token\"",
  15. "-d", "\"{ \"query\": \"query\" }\"",
  16. "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias");
  17. 抛出错误:
  18. {"family":"CLIENT_ERROR","reason":"Bad Request","message":"Unexpected character ('q' (code 113)):
  19. was expecting double-quote to start field name\n at [Source: (org.apache.cxf.transport.http.AbstractHTTPDestination$1);
  20. line: 1, column: 4]"}2020-08-28 19:37:03.961 ERROR 3692 --- [nio-8088-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
  21. Servlet.service() for servlet [dispatcherServlet] in context with path []
  22. threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Failed to decode [/dadata/ % Total % Received % Xferd
  23. Average Speed Time Time Time Current Dload Upload Total Spent Left Speed
  24. 有人可以帮忙吗?谢谢任何帮助
英文:

i'm trying to parse some cURL command:

  1. curl -X POST \
  2. -H "Content-Type: application/json" \
  3. -H "Accept: application/json" \
  4. -H "Authorization: Token token_key" \
  5. -d '{ "query": "query" }' \
  6. https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias

but my version:

  1. ProcessBuilder pb = new ProcessBuilder(
  2. "curl",
  3. "-X", "\"POST\"",
  4. "-H", "\"Content-Type: application/json\"",
  5. "-H", "\"Accept: application/json\"",
  6. "-H", "\"Authorization: Token token\"",
  7. "-d", "\"{ \"query\": \"query\" }\"",
  8. "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias");

throwing an error:

  1. {"family":"CLIENT_ERROR","reason":"Bad Request","message":"Unexpected character ('q' (code 113)):
  2. was expecting double-quote to start field name\n at [Source: (org.apache.cxf.transport.http.AbstractHTTPDestination$1);
  3. line: 1, column: 4]"}2020-08-28 19:37:03.961 ERROR 3692 --- [nio-8088-exec-2] o.a.c.c.C.[.[.[/].[dispatcherServlet] :
  4. Servlet.service() for servlet [dispatcherServlet] in context with path []
  5. threw exception [Request processing failed; nested exception is java.lang.IllegalArgumentException: Failed to decode [/dadata/ % Total % Received % Xferd
  6. Average Speed Time Time Time Current Dload Upload Total Spent Left Speed

Could someone help plz? Thanks for any help

答案1

得分: 0

也许对某人有帮助

  1. String request = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias";
  2. URL url = new URL(request);
  3. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  4. conn.setDoOutput(true);
  5. conn.setInstanceFollowRedirects(false);
  6. conn.setRequestMethod("POST");
  7. conn.setRequestProperty("Content-Type", "application/json");
  8. conn.setRequestProperty("Accept", "application/json");
  9. conn.setRequestProperty("Authorization", "Token token");
  10. JSONObject query = new JSONObject();
  11. query.put("query", "query");
  12. OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
  13. wr.write(query.toString());
  14. wr.flush();
  15. InputStream inputStream = conn.getInputStream();

在这里找到了解决方案:https://www.it-swarm.dev/es/java/post-solicitud-enviar-datos-json-java-httpurlconnection/1043548240/

英文:

Maybe it will be helpfull for someone

  1. String request = "https://suggestions.dadata.ru/suggestions/api/4_1/rs/findById/fias"
  2. URL url = new URL(request);
  3. HttpURLConnection conn = (HttpURLConnection) url.openConnection();
  4. conn.setDoOutput(true);
  5. conn.setInstanceFollowRedirects(false);
  6. conn.setRequestMethod("POST");
  7. conn.setRequestProperty("Content-Type", "application/json");
  8. conn.setRequestProperty("Accept", "application/json");
  9. conn.setRequestProperty("Authorization", "Token token");
  10. JSONObject query = new JSONObject();
  11. query.put("query", "query");
  12. OutputStreamWriter wr = new OutputStreamWriter(conn.getOutputStream());
  13. wr.write(query.toString());
  14. wr.flush();
  15. InputStream inputStream = conn.getInputStream();

Found the solution here https://www.it-swarm.dev/es/java/post-solicitud-enviar-datos-json-java-httpurlconnection/1043548240/

huangapple
  • 本文由 发表于 2020年8月28日 23:55:48
  • 转载请务必保留本文链接:https://go.coder-hub.com/63637188.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定