Ошибка при выполнении сообщения Http в сотах

У меня есть два мобильных устройства Android: один v2.3 api 9 и один сотовый ящик v3.1. Я хочу опубликовать ссылку http api для sms-кода. Похоже, что я получил ошибку в сотах, а другой мобильный работает отлично, это код

public void sendSMS(String phone_num, int password) { try { HttpClient hc = new DefaultHttpClient(); HttpPost post = new HttpPost("http://www.google.com/"); hc.execute(post); // I got an error here } catch(IOException e) { Log.e("error", "error"); } } 

StrictMode включен в HoneyComb, вы должны отключить его, чтобы избежать NetworkOnMainThreadException

  StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

Но это не рекомендуется , используйте Asynctask , здесь вы можете найти пример:

http://developer.android.com/reference/android/os/AsyncTask.html

Вы испытываете это из-за новой функции в Android Honeycomb. Если вы просмотрите свои журналы, вы увидите, что вы получаете исключение NetworkOnMainThreadException

В Android Honeycomb существует новая политика приложений, которая ограничивает выполнение длительных вызовов основного потока .

Проверьте свой стек исключений, если увидите следующее: StrictMode$AndroidBlockGuardPolicy.onNetwork

Что мне помогло – это прочитать это, а затем исправить мой код, чтобы не использовать основной поток выполнения для HTTP-вызова.

100% рабочее решение!

Поместите следующие коды выше вашего super.onCreate под protected void onCreate :

 StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build(); StrictMode.setThreadPolicy(policy); 

Идея от Йоргиса! Спасибо ему! Надеюсь, он решает вашу проблему ~

У меня была такая же проблема и была очищена с помощью Async Task.So не вызывайте запрос httppost в основном потоке. Вместо этого используйте задачу Async, чтобы выполнить http post . Также вам будет удобнее. Link: http://www.vogella.com/articles/AndroidPerformance /article.html