首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >API请求在PHP中使用cURL,而不是在Java中使用HttpClient

API请求在PHP中使用cURL,而不是在Java中使用HttpClient
EN

Stack Overflow用户
提问于 2018-08-31 03:09:56
回答 1查看 0关注 0票数 0

我想使用HttpClient将以下PHP代码转换为Java:

代码语言:javascript
复制
$request = curl_init('URL');
curl_setopt_array($request, [
  CURLOPT_HTTPHEADER => [
    'Content-Type: application/json',
  ],
  CURLOPT_POST => true,
  CURLOPT_POSTFIELDS => '{"req": {"Data": "KEY", "DataType": 1}}',
  CURLOPT_REFERER => 'REFERER URL'
]);
$response = curl_exec($request);
curl_close($request);

我有的java代码:

代码语言:javascript
复制
CloseableHttpClient client = HttpClients.createDefault();
HttpPost httpPost = new HttpPost("URL");
String json = "{\"req\": {\"Data\": \"KEY\", \"DataType\": 1}}";
StringEntity entity = new StringEntity(json);
httpPost.setEntity(entity);
httpPost.addHeader("Content-Type", "application/json");
httpPost.addHeader("Referer", "REFERER URL");

CloseableHttpResponse response = client.execute(httpPost);
HttpEntity responseEntity = response.getEntity();
System.out.println(EntityUtils.toString(responseEntity));
client.close();

出于某种原因,PHP返回{"d": "the data i want"},而java返回{"d": null}

我知道这不是因为内容类型,因为故意在PHP中将其改为废话会使curl返回一个html页面,而不是{“d”:null}。

当我没有设置PHP中的referer时,我得到了{"d": null},但当它被设置为任何url我希望它工作。

当POSTFIELDS中的“Data”设置为错误的键时,我{"d": null}也会得到。

EN

回答 1

Stack Overflow用户

发布于 2018-08-31 13:08:19

这条线对我来说最可疑:

代码语言:javascript
复制
HttpPost httpPost = new HttpPost("URL");

您将字符串“URL”作为URL放置,当然这不是有效的URL。所以我会尝试在那里输入一个有效的URL并再试一次。

同样在这一行上尝试添加有效的URL:

代码语言:javascript
复制
httpPost.addHeader("Referer", "REFERER URL");

此处“REFERER URL”也不是有效的URL。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100002525

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档