【发布时间】:2014-01-01 20:04:38
【问题描述】:
我正在尝试使用 Apache HttpClient 从站点的 API 获取 JSON 响应,但它给了我“IllegalStateException:目标主机不能为空,或在参数中设置。”
Java 代码:
private String orderInURL = "https://r-test.ordr.in";
public String deliveryList(String datetime, String zip, String city, String addr) throws ClientProtocolException, IOException {
String listURL = orderInURL+"/dl/" + datetime + "/" + zip + "/" + city + "/" +
addr + "?_auth=1," + this.privateKey;
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpGet getRequest = new HttpGet(URLEncoder.encode(listURL, "UTF-8"));
//header
getRequest.setHeader("accept", "application/json");
HttpResponse response = httpClient.execute(getRequest);
if (response.getStatusLine().getStatusCode() != 200) {
throw new RuntimeException("Failed : HTTP error code : "
+ response.getStatusLine().getStatusCode());
}
BufferedReader br = new BufferedReader(
new InputStreamReader((response.getEntity().getContent())));
String output;
System.out.println("Output from Server .... \n");
while ((output = br.readLine()) != null) {
System.out.println(output);
}
httpClient.getConnectionManager().shutdown();
return output;
}
....
System.out.println(orderin.deliveryList("ASAP", "11111", "MyCity", "100 My Address"));
GET URL 结果是:
https://r-test.ordr.in/dl/ASAP/11111/MyCity/100%20My%20Address?_auth=1,XXXXXXXXXXXXXXXXX
如果您将 XXXXXXXXX... 替换为私钥。如果我只是复制此 URL 并将其放入浏览器中,则会返回正确的 JSON。我不知道为什么它不会在 Java 中返回正确的结果。任何帮助表示赞赏。
【问题讨论】:
标签: java json apache http httpclient