Android Простой HTTP-запрос? - PullRequest
2 голосов
/ 08 марта 2012

У меня есть этот код для приложения Android, которое я пытаюсь создать, чтобы взаимодействовать с моим веб-сайтом PHP.У меня активировано разрешение android.permission.INTERNET , и он продолжает создавать тост с надписью «ОШИБКА».вместо содержимого сайта.Вот мой единственный Java-файл:

package com.http.request;

import java.io.IOException;

import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.util.EntityUtils;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;

public class HttprequestActivity extends Activity {
    /** Called when the activity is first created. */

    private String doHTTPRequest(String url){
        String results = "ERROR";
        try
        {
            HttpClient hc = new DefaultHttpClient();
            HttpPost post = new HttpPost(url);

            HttpResponse rp = hc.execute(post);

            if(rp.getStatusLine().getStatusCode() == HttpStatus.SC_OK)
            {
                results = EntityUtils.toString(rp.getEntity());
            }
        }catch(IOException e){
            e.printStackTrace();
        }
        return results;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        String results = doHTTPRequest("http://www.yahoo.com");
        Toast.makeText(getApplicationContext(), results, Toast.LENGTH_LONG).show();
    }
}

Ответы [ 3 ]

3 голосов
/ 08 марта 2012

Я бы проверил, чтобы

  1. Если возникло исключение, выясните причину исключения IOException
  2. Ваш сервер потенциально может возвращать не 200код ответа.

Установите некоторые контрольные точки и посмотрите, что там происходит.Моя ставка на код ответа.

1 голос
/ 08 марта 2012

Это ваша собственная строка "ОШИБКА", которую отображает Toast().Лучше изменить

catch(IOException e){
        e.printStackTrace();
    }

на

catch(IOException e){
        result = "ERROR IOException";
        e.printStackTrace();
    }

Исключение выдается при попытке подключения в основном потоке, что не разрешено.Поместите doHTTPRequest() в поток или AsyncTask.

0 голосов
/ 08 марта 2012

Что говорит ваша стековая трассировка, LogCat?В чем ошибка?Добавьте больше информации, сделайте ее более понятной для понимания, чем «угадывание кофейных зерен»

Я предполагаю, что это происходит потому, что вы пытаетесь выполнить сетевую операцию в потоке пользовательского интерфейса, что запрещено в версиях 3.0+.http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

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