我正在使用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
任何帮助都将不胜感激。
答案 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请求时,请确保不包含更多端口。