java中的curl命令等价物

java中的curl命令等价物,java,post,curl,Java,Post,Curl,这是我的curl命令: curl https://login.xyz.com/v1/oauth/token -H "Accept: application/json" --data 'client_id=client_id' --data 'client_secret=client_secret' --data 'redirect_uri=redirect_uri' --data 'code=code' 我正试着用java发布。以下是我想做的: String resourceUrl = "ht

这是我的curl命令:

curl https://login.xyz.com/v1/oauth/token -H "Accept:
application/json" --data 'client_id=client_id' --data
'client_secret=client_secret' --data 'redirect_uri=redirect_uri'
--data 'code=code'
我正试着用java发布。以下是我想做的:

String resourceUrl = "https://login.xyz.com/v1/oauth/token?client_id=<client.id>&client_secret=<client.secret>&redirect_uri=https://login.xyz.com/user/login&code=<code>";
HttpURLConnection httpcon = (HttpURLConnection) ((new URL(resourceUrl).openConnection()));
httpcon.setDoOutput(true);
httpcon.setRequestProperty("Content-Type", "application/json");
httpcon.setRequestProperty("Accept", "application/json");
httpcon.setRequestMethod("POST");
httpcon.connect();      
System.out.println(httpcon.getHeaderField(0));

但是我得到了HTTP/1.1500内部服务器错误

我没有测试,但通过查看文档和源代码,我可以看到curl命令和Java实现之间的一些差异:

卷曲:

  • 执行职务
  • 内容类型为application/x-www-form-urlencoded
:

-d、 --数据

(HTTP)将POST请求中的指定数据发送到HTTP服务器, 与用户填写HTML时浏览器所做的相同 表单并按下提交按钮。这将导致curl通过 使用内容类型将数据发送到服务器 application/x-www-form-urlencoded。与-F、-form相比

另见:

Java实现:

  • 执行POST,但URL变得相似(将请求方法设置为POST,但在URL查询字符串中传递参数)
  • 内容类型是application/json
我希望这能有所帮助。

公共类卷发测试{
public void main(字符串[]args)引发IOException{
sendData();
}
公共字符串sendData()引发IOException{
//curl_init和url
URL=新URL(“将请求放在此处”);
HttpURLConnection con=(HttpURLConnection)url.openConnection();
//卷发柱
con.setRequestMethod(“POST”);
//卷曲跟随定位
con.setInstanceFollowRedirects(真);
String postData=“用于发布的我的数据”;
con.setRequestProperty(“内容长度”,
String.valueOf(postData.length());
con.设置输出(真);
con.setDoInput(真);
DataOutputStream输出=新的DataOutputStream(con.getOutputStream());
输出.writeBytes(postData);
output.close();
//“发布数据发送…等待回复”);
int code=con.getResponseCode();//200=HTTP\u确定
System.out.println(“响应(代码):”+代码);
System.out.println(“响应(消息):”+con.getResponseMessage());
//阅读回复
DataInputStream输入=新的DataInputStream(con.getInputStream());
INTC;
StringBuilder resultBuf=新建StringBuilder();
而((c=input.read())!=-1){
resultBuf.append((char)c);
}
input.close();
返回resultBuf.toString();
}
}

下面是一个示例,我将如何处理所需的POST:
-X/--request
,-d-仅一个用于指定数据值的键不确定我是否同意:似乎你是对的,
-X
仅用于您希望在没有任何数据的情况下发送POST的情况