Несмотря на добавление интернет-разрешения в файл манифеста, почему я по-прежнему получаю исключение SocketException PermissionDenied? - PullRequest
0 голосов
/ 06 октября 2011

Я хочу позвонить на мыльный веб-сервис, как показано ниже.Я добавил интернет-разрешение для файла манифеста, но я все еще получаю исключение (SocketException: разрешение отклонено).

class CallWebService extends AsyncTask<String, Void, String> {

    @Override
    protected String doInBackground(String... parameters) {
        final DefaultHttpClient httpClient=new DefaultHttpClient();
        // request parameters
        HttpParams params = httpClient.getParams();
        HttpConnectionParams.setConnectionTimeout(params, 10000);
        HttpConnectionParams.setSoTimeout(params, 15000);
        // set parameter
        HttpProtocolParams.setUseExpectContinue(httpClient.getParams(), true);

        // POST the envelope
        HttpPost httppost = new HttpPost(parameters[0]);
        // add headers
        httppost.setHeader("soapaction", parameters[1]);
        httppost.setHeader("Content-Type", "text/xml; charset=utf-8");

        String responseString="";
        try {

            // the entity holds the request
            HttpEntity entity = new StringEntity(parameters[2]); 
            httppost.setEntity(entity);

            // Response handler
            ResponseHandler<String> rh=new BasicResponseHandler();

            /*{
            // invoked when client receives response
            public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException {

             // get response entity
             HttpEntity entity = response.getEntity();

             // read the response as byte array
                   StringBuffer out = new StringBuffer();
                   byte[] b = EntityUtils.toByteArray(entity);

                   // write the response byte array to a string buffer
                   out.append(new String(b, 0, b.length));        
                   return out.toString();
            }
           };
             */
            responseString=httpClient.execute(httppost, rh); 

        } 
        catch (Exception e) {
            Log.v("exception", e.toString());
        }

        // close the connection
        httpClient.getConnectionManager().shutdown();
        return responseString;
    } 
}

1 Ответ

2 голосов
/ 06 октября 2011

Вы указали разрешение на доступ к Интернету на верхнем уровне (приложения) вашего манифеста (как показано ниже).Если вы опустите его ниже, ошибок не будет, но вы не получите доступ к Интернету ...

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package=...
    android:versionCode="1"
    android:versionName="1.0">
    <application 
        ...
    </application>
    <uses-sdk android:minSdkVersion="7" />
    <uses-permission android:name="android.permission.INTERNET" />
</manifest> 
...