繁体   English   中英

Android App中为UnknownHostException,但可在浏览器中使用

[英]UnknownHostException in Android App but working in Browser

我知道这个问题已经在SO上问过好几次了,但是那并不能解决我的问题。

我需要清单文件中的权限。 Web服务在浏览器中运行良好,但在Android应用程序中提供了UnknownHostException。

这是我的机器人代码:

内部舱位

private class WebService extends AsyncTask<String, Void, String>{
            @Override
            protected String doInBackground(String... urls){
                String res = "";
                _callService();
                return res;
            }
            @Override
            protected void onPostExecute(String result){
                progressDialog.dismiss();
                //reset();
            }
        }

_callService()方法:

public void _callService(){
        try{
            HttpResponse response = null;
            HttpParams httpParameters = new BasicHttpParams();
            HttpConnectionParams.setConnectionTimeout(httpParameters, 400000);
            HttpConnectionParams.setSoTimeout(httpParameters, 600000);
            HttpClient httpclient = new DefaultHttpClient(httpParameters);
            HttpPost httppost = new HttpPost(CommonObject.URL + "CheckUser");
            List<NameValuePair> values = new ArrayList<NameValuePair>();

            values.add(new BasicNameValuePair("Type", String.valueOf(CommonObject.type)));

            if(s5.equalsIgnoreCase("Company Account")){
                values.add(new BasicNameValuePair("UserType", "2"));
                values.add(new BasicNameValuePair("CustomerFirstName", s6));
            }else{
                values.add(new BasicNameValuePair("UserType", "1"));
                values.add(new BasicNameValuePair("CustomerFirstName", s1));
            }

            values.add(new BasicNameValuePair("CustomerEmail", s2));
            values.add(new BasicNameValuePair("CustomerPhoneNo", s3));
            values.add(new BasicNameValuePair("CustomerAccountNo", s4));

            /* Log of above values*/
            Log.v("URL", CommonObject.URL + "CheckUser");
            Log.v("Type", String.valueOf(CommonObject.type));
            if(s5.equalsIgnoreCase("Company Account")){
                Log.v("UserType", "2");
                Log.v("CustomerFirstName", s6);
            }else{
                Log.v("UserType", "1");
                Log.v("CustomerFirstName", s1);
            }
            Log.v("CustomerEmail", s2);
            Log.v("CustomerPhoneNo", s3);
            Log.v("CustomerAccountNo", s4);

            try{
                httppost.setEntity(new UrlEncodedFormEntity(values));
            }catch (UnsupportedEncodingException e) {
                e.printStackTrace();
                Log.e("URL Encoded Form Entity Exception", e.getMessage().toString());
            }

            try{
                response = httpclient.execute(httppost);
            }catch (ClientProtocolException e) {
                e.printStackTrace();
                Log.e("Client Protocol Exception", e.getMessage().toString());
            }catch (IOException e) {
                e.printStackTrace();
                Log.e("IO Exception", e.getMessage().toString());
            }catch(Exception e){
                e.printStackTrace();
                Log.e("Exception", e.getMessage().toString());
            }

            final int statusCode = response.getStatusLine().getStatusCode();
            response_code = String.valueOf(response.getFirstHeader("ResponseCode")).trim();
            response_message = String.valueOf(response.getLastHeader("Message")).trim();

            Log.e("Exact Response From Server", String.valueOf(response));
            Log.e("ResponseCode", response_code);
            Log.e("Message", response_message);

            String content = "";
            if(statusCode == 200){
                HttpEntity mResEntityGet = response.getEntity();
                if (mResEntityGet != null) {
                    try {
                        content = EntityUtils.toString(mResEntityGet);
                    } catch (ParseException e) {
                        e.printStackTrace();
                        Log.e("Parse Exception", e.getMessage().toString());
                    } catch (IOException e) {
                        e.printStackTrace();
                        Log.e("IO Exception", e.getMessage().toString());
                    } catch(Exception e){
                        e.printStackTrace();
                        Log.e("Exception", e.getMessage().toString());
                    }

                    Log.v("CONTENT", content);

                    if(response_code.endsWith("200")){
                        //send_msg = "Mail send";
                    }else{
                        //send_msg = "";
                    }
                }
            }
        }catch(Exception e){
            Log.e("Error in _callService", e.getMessage().toString());
        }
    }

以这种方式在按钮单击事件上调用:

WebService service = new WebService();
service.execute();

确认INTERNET权限标签是否是清单标签的子级,而不是应用程序标签的子级。 在其他线程中也出现了类似的错误。 Android:UnknownHostException

编辑:在该线程中,如果您阅读了所有答案,则有多个“可能的解决方案”来解决您的错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM