Java httpclient 4.1 如何发送带有可配置端口的post请求

标签 java https httpclient

哇,我找不到任何工作的 httpclient 4.1 示例,发送非默认端口的 post 请求 但是可配置的端口,我有这个代码但是它不起作用

// lHashMapParams is with params getting form function .. 

List<BasicNameValuePair> params = new ArrayList<BasicNameValuePair>();
        for (String key : lHashMapParams.keySet()) {
            String val = lHashMapParams.get(key);
            params.add(new BasicNameValuePair(key,val));

}
String url = "https://foo.com";
int port = 8883;
String = "https";
UrlEncodedFormEntity query = new UrlEncodedFormEntity(params);
        HttpHost httpHost = new HttpHost(url,port,httpType); 

        HttpPost post = new HttpPost("/");
        post.setEntity(query);


        HttpResponse response_ = httpclient.execute(httpHost,post);

得到这个异常:

log4j:WARN Please initialize the log4j system properly.
java.net.UnknownHostException: https://foo.com
    at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:849)
    at java.net.InetAddress.getAddressFromNameService(InetAddress.java:1183)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1136)
    at java.net.InetAddress.getAllByName0(InetAddress.java:1109)
    at java.net.InetAddress.getAllByName(InetAddress.java:1072)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.resolveHostname(DefaultClientConnectionOperator.java:242)
    at org.apache.http.impl.conn.DefaultClientConnectionOperator.openConnection(DefaultClientConnectionOperator.java:130)
    at org.apache.http.impl.conn.AbstractPoolEntry.open(AbstractPoolEntry.java:149)
    at org.apache.http.impl.conn.AbstractPooledConnAdapter.open(AbstractPooledConnAdapter.java:121)
    at org.apache.http.impl.client.DefaultRequestDirector.tryConnect(DefaultRequestDirector.java:561)
    at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:415)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:820)
    at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:776)
    at com.ut.HttpClientImpl.postHttpReqest(HttpClientImpl.java:75)  

简单的话怎么定义端口?

最佳答案

您正在尝试查找主机名 https://foo.com 这就是问题所在;查找应该针对 foo.com。我不确定您是如何得到有问题的代码的,但是花一些时间看一下 HttpClient tutorial 是值得的。 .

如果我没记错的话,下面的代码应该足够了:

HttpPost httpost = new HttpPost(url); //construct the complete URL i.e. action to post to
httpost.setEntity(entity);
response = httpclient.execute(httpost);

其中 url 将由 http/https 架构、主机名、端口和资源 URI 的其余部分构成。

关于Java httpclient 4.1 如何发送带有可配置端口的post请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6096937/

相关文章:

java - toRightOf 在 Android 布局中未按预期工作

node.js - 发布请求的 "Body"始终采用 unicode

php - CURL: SSL 证书失败,验证 CA 证书是否正常

security - 将 X-Forwarded-For 信任为 "identify"访问者

c# - StringContent - 媒体类型参数

java - JFrame 与 GroupLayout

java - 如何使用 Cassandra Java 驱动程序访问带有嵌套映射的列表

java - 针对网站的 http client head 方法返回 503 但该网站运行正常

android - HttpClient 后 session 问题?我如何知道 session 是否已创建?

java - 死你threadpoolexecutor