具有指定端口号

时间:2015-12-19 12:57:45

标签: java android http post android-studio

我正在使用Android Studio IDE中的JAVA开发Android应用程序。我正在尝试从我的应用程序发送HTTP Post请求,以从XML检索服务器的响应。

当我跑步时

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("100.1.1.1");

它没有任何异常,但是当我在URL中使用端口时

HttpClient httpClient = new DefaultHttpClient();
HttpPost httpPost = new HttpPost("100.1.1.1:8081");

应用程序警告我“不幸的是,App停止了”并退出。

此帖子中的真实IP地址已被100.1.1.1

取代

我的问题是“为什么它不适用于URL中的端口号?”如果有更好的方法通过URL和查询字符串从Web服务器获取数据是什么。

以XML格式返回数据的URL如下:

  

100.1.1.1:8081/?FindResults&Parameter1&Parameter2&Parameter3

任何帮助都将不胜感激。

2 个答案:

答案 0 :(得分:0)

尝试使用HttpPost(URI)的{​​{1}}构造函数。认为它会起作用。

答案 1 :(得分:0)

尝试单独添加端口,如下面的代码所示:

private static final int HTTP_PORT = 8081;

private static final String USER_AGENT_NAME = "http.useragent";

private static final String USER_AGENT_VALUE = "Mozilla/5.0 (Linux; U; Android 1.1; en-us;dream) AppleWebKit/525.10+ (KHTML, like Gecko) Version/3.0.4 Mobile Safari/523.12.2";


protected DefaultHttpClient getHttpClient() throws KeyManagementException, UnrecoverableKeyException, 
NoSuchAlgorithmException, KeyStoreException, CertificateException, IOException {
    if (httpClient == null) {

        SchemeRegistry schemeRegistry = new SchemeRegistry();
        schemeRegistry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), HTTP_PORT));

        HttpParams params = new BasicHttpParams();
        params.setParameter(USER_AGENT_NAME, USER_AGENT_VALUE);
        HttpProtocolParams.setVersion(params, HttpVersion.HTTP_1_1);
        HttpProtocolParams.setContentCharset(params, HTTP.UTF_8);

        ThreadSafeClientConnManager cm = new ThreadSafeClientConnManager(params, schemeRegistry);
        httpClient = new DefaultHttpClient(cm, params);
    }
    return httpClient;
}

在发出HTTP请求时,请确保不包含更多端口。