簡體   English   中英

使用主機名時 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM