簡體   English   中英

Android簡單的HTTP請求?

[英]Android Simple HTTP Request?

我有一個代碼,用於嘗試與Android網站交互的Android應用程序。 我已激活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();
    }
}

我會檢查以確保

  1. 如果拋出異常,請調查導致IOException的原因
  2. 您的服務器可能返回了非200的響應代碼。

設置一些斷點,看看那里發生了什么。 我的賭注是響應代碼。

那是Toast()顯示的您自己的“ ERROR”字符串。 更好的改變

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

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

當您嘗試連接到主線程時,將引發異常,這是不允許的。 doHTTPRequest()放入線程或AsyncTask

LogCat,您的堆棧跟蹤信息是什么? 有什么錯誤? 添加更多信息,使其比“猜測咖啡豆”更容易理解

我的猜測是:發生這種情況是因為您試圖在3.0以上版本不允許的UI線程中執行網絡操作。 http://developer.android.com/reference/android/os/NetworkOnMainThreadException.html

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM