![](/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.