无法parsing主机:URL没有与主机名关联的地址

我有一个Web服务调用来打倒一个JSON对象,它只有当我有IP地址,而不是主机名。 我一直在使用IP地址,但现在我需要有主机名。

这是我的代码

StringBuilder stringBuilder = new StringBuilder(); HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 3000); HttpConnectionParams.setSoTimeout(httpParams, 7000); DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); HttpPost httpost = new HttpPost(URL); try { HashMap<String,String> params = new HashMap<String,String>(); // Login info params.put("username", edtUserName.getText().toString()); params.put("password", edtPass.getText().toString()); params.put("deviceOS", "Android"); params.put("deviceOSVersion", android.os.Build.VERSION.RELEASE); params.put("language", "0"); //JSON object holding the login info JSONObject holder = new JSONObject(params); StringEntity se = new StringEntity(holder.toString()); httpost.setEntity(se); httpost.setHeader("Content-Type", "application/json"); //Executing the call HttpResponse response = httpClient.execute(httpost); StatusLine statusLine = response.getStatusLine(); int statusCode = statusLine.getStatusCode(); if (statusCode == 200) { HttpEntity entity = response.getEntity(); InputStream inputStream = entity.getContent(); BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream)); String line; while ((line = reader.readLine()) != null) { stringBuilder.append(line); } inputStream.close(); } else { returnCode = -1; Log.d("JSON", "Failed to download file"); } } catch (Exception e) { returnCode = -1; Log.d("readJSONFeed", e.getLocalizedMessage()); } return stringBuilder.toString(); 

我不知道为什么这是行不通的。 我正在testing与Wifi连接的电话,我的清单有<uses-permission android:name="android.permission.INTERNET" /><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

这个networking服务确实有效。 只是不在Android上

如果有人有一个伟大的想法,谢谢。

Solutions Collecting From Web of "无法parsing主机:URL没有与主机名关联的地址"

我通过删除这些行来修复它

 HttpParams httpParams = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(httpParams, 3000); HttpConnectionParams.setSoTimeout(httpParams, 7000); DefaultHttpClient httpClient = new DefaultHttpClient(httpParams); 

并用此代码replace它

 HttpClient httpClient = MainActivity.createHttpClient(); public static HttpClient createHttpClient(){ try { KeyStore trustStore = KeyStore.getInstance(KeyStore.getDefaultType()); trustStore.load(null, null); SSLSocketFactory sf = new MySSLSocketFactory(trustStore); sf.setHostnameVerifier(SSLSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER); HttpParams params = new BasicHttpParams(); HttpConnectionParams.setConnectionTimeout(params, 15000); HttpConnectionParams.setSoTimeout(params, 5000); SchemeRegistry registry = new SchemeRegistry(); registry.register(new Scheme("http", PlainSocketFactory.getSocketFactory(), 80)); registry.register(new Scheme("https", sf, 443)); ClientConnectionManager ccm = new ThreadSafeClientConnManager(params, registry); return new DefaultHttpClient(ccm, params); } catch (Exception e) { return new DefaultHttpClient(); } }