gpt4 book ai didi

java - 指定端口号的 HTTP POST 请求

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:27:46 31 4
gpt4 key购买 nike

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

当我运行时

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

它毫无异常(exception)地工作,但是当我在 URL 中使用一个端口时,比如

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

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

本文中的真实 IP 地址已替换为 100.1.1.1

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

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

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

如有任何帮助,我们将不胜感激。

最佳答案

尝试像下面的代码一样单独添加端口:

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 请求时,请确保不包含更多端口。

关于java - 指定端口号的 HTTP POST 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34371032/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com