Java httpclient 4.1如何使用可配置端口发送post请求 [英] Java httpclient 4.1 how to send post request with configurable port

查看:1174
本文介绍了Java httpclient 4.1如何使用可配置端口发送post请求的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

  // lHashMapParams与params获取表单功能.. 

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请正确初始化log4j系统。 
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教程



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

  HttpPost httpost = new HttpPost(url); //构造完整的URL,即发布到
httpost.setEntity(entity)的动作;
response = httpclient.execute(httpost);

其中url将使用http / https架构,主机名,端口和其余部分构建资源URI。


wow , i just can't find any working httpclient 4.1 example , to send post request with Not default port but configurable port , i have this code but its dosn't work

// 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);

getting this exception :

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)  

is simple words how to define port ?

解决方案

You are attempting to perform a lookup of the host name https://foo.com and that's the problem; the lookup should have been against foo.com. I'm not sure as to how you've arrived at the code in question, but it would be worth some time to take a look at the HttpClient tutorial.

If I'm not wrong, the following code, should be sufficient:

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

where url is to be constructed with the http/https schema, host name, port and the rest of the resource URI.

这篇关于Java httpclient 4.1如何使用可配置端口发送post请求的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆