【问题标题】:Apache http post exampleApache http 帖子示例
【发布时间】:2014-04-15 20:07:30
【问题描述】:

我对这个 Apache http 客户端非常陌生。我有一个 URL 可以对其中一项服务进行 Web 服务调用。我已成功执行 GET 请求,但我正在尝试使用 POST 请求执行此操作,但没有得到任何响应。我无法从实体中获取内容。

我的网址:“https://maps.googleapis.com/maps/api/place/details/xml?reference=CoQBcQAAAEZ7yCju-0lhU7sZIBBe_On9jYImWzZ9Zt5rIg1tX6zaH02dHrQMHF1LFHY1_yUuXzsUf6m6-rrQJ8Ec_mGxBYtV85Wyb4anakaUi3QuZj7ygJXB3Fd5x69k_4UnDKMmEBNa410vbCXgQOGIkHCbNpcbC8ENxmVlUrqiifmdfuLgEhCtPATMhFRdsjuyAL_j__OEGhTnqujRRMYy_5-kxzcqCdMY4_1dbA&sensor=true&key=key1”;

这是使用 GET 方法执行的。下面你可以看到我的代码。

public class HttpClientPostExample {
public static void main(String[] args) throws ClientProtocolException,
        IOException {
    String url = "https://maps.googleapis.com/maps/api/place/details/xml?";

    HttpClient client = HttpClientBuilder.create().build();
    // HttpRequest httpRequest = HttpsClientImpl.createRequest("Post", url);
    HttpPost httpPost = new HttpPost(url);

    List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();
    nameValuePairList
            .add(new BasicNameValuePair(
                    "reference",
                    "CoQBcQAAAEZ7yCju-0lhU7sZIBBe_On9jYImWzZ9Zt5rIg1tX6zaH02dHrQMHF1LFHY1_yUuXzsUf6m6-rrQJ8Ec_mGxBYtV85Wyb4anakaUi3QuZj7ygJXB3Fd5x69k_4UnDKMmEBNa410vbCXgQOGIkHCbNpcbC8ENxmVlUrqiifmdfuLgEhCtPATMhFRdsjuyAL_j__OEGhTnqujRRMYy_5-kxzcqCdMY4_1dbA"));
    nameValuePairList.add(new BasicNameValuePair("sensor", "true"));
    nameValuePairList.add(new BasicNameValuePair("key",
            "AIzaSyBA0Hu3is9qIJ5v6NEuofigk0y-aQwqiP0"));
    httpPost.addHeader("User-Agent", "User-Agent");
    httpPost.setEntity(new UrlEncodedFormEntity(nameValuePairList, "UTF-8"));
    HttpResponse response = client.execute(httpPost);
    System.out.println(response.getStatusLine().getStatusCode());

    Header[] headerArray = response.getAllHeaders();
    for (Header header : headerArray) {
        System.out.println("Header Name: " + header.getName()
                + " Header Value: " + header.getValue());
    }
}

任何人都可以帮助我解决这个问题。这是发出 POST 请求的正确方法吗...???

如何在触发/调用执行方法之前获取实际 URL...???

【问题讨论】:

    标签: java apache httpclient


    【解决方案1】:

    尝试将您的 client 实例化技术从

    HttpClient client = HttpClientBuilder.create().build();
    

    DefaultHttpClient client = new DefaultHttpClient();
    

    为确保您的实体已被完全使用,请在显示响应标头之前调用EntityUtils.consume(entity)

    ...
    HttpResponse response = client.execute(httpPost);
    EntityUtils.consume(response.getEntity());
    Header[] headerArray = response.getAllHeaders();
    for (Header header : headerArray) {
        System.out.println("Header Name: " + header.getName()
                + " Header Value: " + header.getValue());
    }
    

    【讨论】:

      猜你喜欢
      • 2018-06-12
      • 2011-01-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-06
      • 1970-01-01
      • 2018-02-27
      相关资源
      最近更新 更多