Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
尝试使用JavaHTTPURL连接执行curl命令_Java_Http_Curl - Fatal编程技术网

尝试使用JavaHTTPURL连接执行curl命令

尝试使用JavaHTTPURL连接执行curl命令,java,http,curl,Java,Http,Curl,嗨,我有下面的卷曲脚本 curl -i -X PUT -d "{\"loginList\":[{\"externalLoginKey\":\"1406560803453iGBoMm\",\"testStatus\":\"R\"}]}" -H "X-test-debug-override: true" -k http://someapi/logins 我正在尝试使用java编写Http post。下面是我的代码。我做错什么了吗?我得到错误,但卷曲运行良好 import java.io.Data

嗨,我有下面的卷曲脚本

curl -i -X PUT -d "{\"loginList\":[{\"externalLoginKey\":\"1406560803453iGBoMm\",\"testStatus\":\"R\"}]}" -H "X-test-debug-override: true" -k  http://someapi/logins
我正在尝试使用java编写Http post。下面是我的代码。我做错什么了吗?我得到错误,但卷曲运行良好

import java.io.DataOutputStream;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class HttpTesting {

public static void main(String[] args) throws Exception {

    String apiURL = "http://someapi/logins";
    URL url = new URL(apiURL);
    HttpURLConnection con = (HttpURLConnection) url.openConnection();
    String str = "{\"loginList\":[{\"externalLoginKey\":\"1406565099034jZrHXe\",\"testStatus\":\"R\"}]}";
    con.disconnect();

    con.setDoOutput(true);
    con.setDoInput(true);
    con.setRequestMethod("POST");
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("X-test-debug-override", "true");
    con.connect();

    OutputStream outStream = con.getOutputStream();
    DataOutputStream out = new DataOutputStream(outStream);
    out.writeBytes(str);
    out.flush();
    out.close();

    int responseCode = con.getResponseCode();
    System.out.println(responseCode);

}

}
从:

-d、 --数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同。这将导致curl使用内容类型应用程序/x-www-form-urlencoded将数据传递给服务器。与-F,--form进行比较。 (我的重点。)

即使您正在发送JSON,您的内容类型也需要是
“application/x-www-form-urlencoded”
。这意味着您还需要使用以下方式对数据进行编码:

顺便说一句,您的
curl
命令使用PUT方法,而Java代码使用
“POST”
方法

-d、 --数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同。这将导致curl使用内容类型应用程序/x-www-form-urlencoded将数据传递给服务器。与-F,--form进行比较。 (我的重点。)

即使您正在发送JSON,您的内容类型也需要是
“application/x-www-form-urlencoded”
。这意味着您还需要使用以下方式对数据进行编码:

顺便说一句,您的
curl
命令使用PUT方法,而Java代码使用
“POST”
方法

-d、 --数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同。这将导致curl使用内容类型应用程序/x-www-form-urlencoded将数据传递给服务器。与-F,--form进行比较。 (我的重点。)

即使您正在发送JSON,您的内容类型也需要是
“application/x-www-form-urlencoded”
。这意味着您还需要使用以下方式对数据进行编码:

顺便说一句,您的
curl
命令使用PUT方法,而Java代码使用
“POST”
方法

-d、 --数据
(HTTP)将POST请求中的指定数据发送到HTTP服务器,其方式与浏览器在用户填写HTML表单并按下提交按钮时的方式相同。这将导致curl使用内容类型应用程序/x-www-form-urlencoded将数据传递给服务器。与-F,--form进行比较。 (我的重点。)

即使您正在发送JSON,您的内容类型也需要是
“application/x-www-form-urlencoded”
。这意味着您还需要使用以下方式对数据进行编码:


顺便说一句,您的
curl
命令使用PUT方法,而Java代码使用
“POST”
方法。

您遇到了什么错误?如果您遇到异常,请在问题中包含完整的堆栈跟踪。另外,您可能不应该在即将使用的HttpURLConnection上调用
con.disconnect()
。@VGR我收到一个400(错误请求)您是否在curl请求中放入了accept头?您收到了什么错误?如果您遇到异常,请在问题中包含完整的堆栈跟踪。另外,您可能不应该在即将使用的HttpURLConnection上调用
con.disconnect()
。@VGR我收到一个400(错误请求)您是否在curl请求中放入了accept头?您收到了什么错误?如果您遇到异常,请在问题中包含完整的堆栈跟踪。另外,您可能不应该在即将使用的HttpURLConnection上调用
con.disconnect()
。@VGR我收到一个400(错误请求)您是否在curl请求中放入了accept头?您收到了什么错误?如果您遇到异常,请在问题中包含完整的堆栈跟踪。另外,您可能不应该在即将使用的HttpURLConnection上调用
con.disconnect()
。@VGR我收到一个400(错误的请求),您是否在curl请求中放入了accept头?
out.writeBytes(URLEncoder.encode(str, "UTF-8"));