Нарушение сети Android httppost - PullRequest
0 голосов
/ 09 ноября 2011

У меня проблема с моим приложением для Android.Я имею в виду, что я использую код из одного из сайтов в Интернете, выглядит так:

public static String sendLocation(String s) {
    // Create a new HttpClient and Post Header
    //HttpParams params = new BasicHttpParams();
    //params.setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://google.com/read.php");
    //String d = "ok";

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("user", "mobile"));
        nameValuePairs.add(new BasicNameValuePair("location", s));
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);

    } catch (ClientProtocolException e) {
      //  d = "CPE";
    } catch (IOException e) {
       // d = "E";
    }
    return "send";
} 

} `

И проблема / ошибка появилась, когда приложение пытается отправить данные вудаленный сервер (строка ниже)

// Execute HTTP Post Request HttpResponse response = httpclient.execute(httppost);

Я также использую StrictMode и после этого все работает, журналы показывают сетевое нарушение

11-08 22: 34: 40.020: D / StrictMode (939): нарушение политики StrictMode;~ длительность = 359 мс: android.os.StrictMode $ StrictModeNetworkViolation: нарушение политики = 31 = 4

Я включил в файл манифеста соответствующее разрешение

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

У вас есть какие-либоИдея, что я должен сделать, чтобы запустить мое приложение (на самом деле отправлять данные по почте на сервер) без StrictMode?

1 Ответ

1 голос
/ 09 ноября 2011

Проблема в том, что вы пытаетесь выполнять сетевые вызовы в основном потоке пользовательского интерфейса. Используйте эти типы методов только в отдельном потоке.

Хороший пример того, что здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...