![](/img/trans.png)
[英]proxy host name,port,username,password with httpurlconnection
[英]HttpURLConnection unable to resolve host when using host name
我已经检查了关于同一问题的大部分主题,但找不到解决方案。
我的Android
应用程序使用HttpURLConnection
连接到WCF
服务,当我使用托管该服务的机器的 IP 地址时,它工作正常。 但是,当我用主机名替换它时,它无法连接。 我的连接方法很标准:
public static String getData(RequestPackage requestPackage) {
BufferedReader reader = null;
HttpURLConnection con = null;
String uri = requestPackage.getUri();
String response = "";
try {
URL url = new URL(uri);
con = (HttpURLConnection) url.openConnection();
con.setReadTimeout(requestPackage.getReadTimeout());
con.setConnectTimeout(requestPackage.getConTimeout());
con.setRequestMethod(requestPackage.getMethod());
con.setDoInput(requestPackage.isDoInput());
con.setDoOutput(requestPackage.isDoOutput());
JSONObject user = new JSONObject(requestPackage.getParams());
OutputStream os = con.getOutputStream(); // the exception is thrown here
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(os, "UTF-8"));
writer.write(user.toString());
writer.flush();
writer.close();
os.close();
// Get response from the service
int responseCode = con.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
// more code...
}else
// more code
例外是:
java.net.UnknownHostException:无法解析主机“myHostname”:没有与主机名关联的地址“
myHostname 是我的实际主机名。
当我在我的 PC 上使用相同的 url 时它工作正常(同时使用 IP 和主机名)。
在手机上,它仅在我使用 IP 时有效。无论是在应用程序中还是在移动浏览器中。
我在AndroidManifest.xml
中添加了必要的权限:
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
可能是对托管服务的服务器有权限的东西吗? 它是一个内部服务器,所有机器都连接到内部 Wi-Fi.network。 但它适用于 IP...
编辑:我忘了提到我使用的是物理设备而不是模拟器。
没关系,还不错。 Android 告诉您电话无法解析名称“myHostname”。 这取决于您的网络拓扑结构。 我认为手机在接入点上通过 wifi 连接,该接入点有线连接到您的 PC 和您的 myHostname 主机所在的局域网。 您的电脑在其局域网连接上有一个 dns 服务器,或者只是通过局域网广播解析名称。 您肯定没有在手机上使用的连接上配置 dns 服务器。 如果你的局域网上有一个 dns 服务器,那么在连接上设置它,否则我不认为电话可以通过广播来解析。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.