如何将curl -X post转换为java
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了如何将curl -X post转换为java,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2504字,纯文字阅读大概需要4分钟。
内容图文
![如何将curl -X post转换为java](/upload/InfoBanner/zyjiaocheng/674/3a3f9f0419384cb4aafb551baea460df.jpg)
我正在尝试将curl命令转换为Java(使用Apache HttpClient 4.x):
export APPLICATION_ID=SOME_ID
export REST_API_KEY=SOME_KEY
curl -i -X POST -H "X-Parse-Application-Id: ${APPLICATION_ID}" -H "X-Parse-REST-API-Key: ${REST_API_KEY}" -H "Content-Type: image/png" --data-binary @/Users/thomas/Desktop/greep-small.png https://api.parse.com/1/files/greep.png
但出现以下错误:{“错误”:“未经授权”}.
这是我的Java代码如下所示:
DefaultHttpClient httpclient = new DefaultHttpClient();
HttpHost targetHost = new HttpHost("localhost", 80, "http");
httpclient.getCredentialsProvider().setCredentials(
new AuthScope(targetHost.getHostName(), targetHost.getPort()),
new UsernamePasswordCredentials("username", "password"));
HttpPost httpPost = new HttpPost("https://api.parse.com/1/files/greep.png");
System.out.println("executing request:\n" + httpPost.getRequestLine());
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
nameValuePairs.add(new BasicNameValuePair("Example-Application-Id", "SOME_ID"));
nameValuePairs.add(new BasicNameValuePair("Example-REST-API-Key", "SOME_KEY"));
nameValuePairs.add(new BasicNameValuePair("Content-Type", "image/png"));
httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
System.out.println("----------------------------------------");
System.out.println(response.getStatusLine());
if (responseEntity != null) {
System.out.println("Response content length: "
+ responseEntity.getContentLength());
}
System.out.println(EntityUtils.toString(responseEntity));
httpclient.getConnectionManager().shutdown();
如何转换以-H开头的卷曲线和以“ –data-binary”开头的卷曲线? -d的java等效项是什么?
-d '{ "name":"Andrew", "picture": { "name": "greep.png", "__type": "File" } }'
任何提示表示赞赏.谢谢
解决方法:
标头不匹配. curl命令使用X-Parse-Application-Id和X-Parse-REST-API-Key,而Java代码使用Example-Application-Id和Example-REST-API-Key.我想你会想要那些匹配的.另外,您将它们设置为请求的POST正文,而不是HTTP标头.您需要在httpPost上使用setHeader方法之一.我也建议不要以这种方式显式设置Content-Type.内容类型通常作为所发布的HttpEntity的一部分提供.
要使用Java中的HttpClient发布图像内容,您需要使用FileEntity来引用文件的路径(在您的示例中为/Users/thomas/Desktop/greep-small.png).如前所述,现在您正在将标头值作为名称值对发布.
实现curl -d将需要执行一些操作,例如使用要发送的值将StringEntity传递到httpPost.setEntity().
最后,Java代码使用了一些凭据,而我在curl命令中根本看不到这些凭据.
内容总结
以上是互联网集市为您收集整理的如何将curl -X post转换为java全部内容,希望文章能够帮你解决如何将curl -X post转换为java所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。