Несмотря на добавление интернет-разрешения в файл манифеста, почему я все еще получаю исключение SocketException PermissionDenied?
Я хочу позвонить на мыльный веб-сервис, как показано ниже. Я добавил интернет-разрешение для файла манифеста, но я все еще получаю исключение (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 ответ
Решение
Разместите разрешение на доступ к Интернету на верхнем уровне (приложения) вашего манифеста (как показано ниже). Если вы опустите его ниже, ошибок не будет, но вы не получите доступ к Интернету...
<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>