Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用主机名时,HttpURLConnection无法解析主机_Java_Android_Httpurlconnection - Fatal编程技术网

Java 使用主机名时,HttpURLConnection无法解析主机

Java 使用主机名时,HttpURLConnection无法解析主机,java,android,httpurlconnection,Java,Android,Httpurlconnection,我已经检查了关于同一问题的大多数主题,但我找不到解决方案 我的Android应用程序使用HttpURLConnection连接到WCF服务,当我使用托管该服务的机器的IP地址时,它工作正常。但是,当我用主机名替换它时,它无法连接。我的连接方法非常标准: public static String getData(RequestPackage requestPackage) { BufferedReader reader = null; HttpURLConnecti

我已经检查了关于同一问题的大多数主题,但我找不到解决方案

我的
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是我的实际主机名

当我在我的电脑上使用相同的url(包括IP和主机名)时,它可以正常工作

在手机上,它只有在我使用IP时才起作用。无论是在应用程序中还是在手机浏览器中

我已在
AndroidManifest.xml
中添加了必要的权限:

<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />

是否可能是对托管服务的服务器具有权限的内容? 它是一个内部服务器,所有机器都连接到一个内部Wi-Fi网络。但它可以和IP一起工作


编辑:我忘了提到我使用的是物理设备而不是模拟器。

你能从Android ping myHostname吗?@DaveRlz我不知道怎么做。'String uri=requestPackage.getUri()'。我们看不到您使用的是什么类型的ip。也看不到您将如何提供主机名。请提供指向点的信息。从您的WCF服务所在的位置开始。“myHostname是我的实际主机名。”。我们对此一无所知。您的主机是在internet上还是在LAN中?请在电话上提供指向点的信息。”只有在我使用IP时才有效。无论是在应用程序中还是在移动浏览器中。“。好了。解析主机名与你的应用程序无关。你能从Android ping myHostname吗?@DaveRlz我不知道该怎么做。“String uri=requestPackage.getUri()'。我们看不到您使用的是什么类型的ip。也看不到您将如何提供主机名。请提供指向点的信息。从您的WCF服务所在的位置开始。“myHostname是我的实际主机名。”。我们对此一无所知。您的主机是在internet上还是在LAN中?请在电话上提供指向点的信息。”只有在我使用IP时才有效。无论是在应用程序中还是在移动浏览器中。好了。解析主机名与你的应用程序无关。