2013-03-22 102 views
0

這裏是我的代碼,發送一個HTTP請求:Android的HTTP響應處理

package com.example.database; 

import java.io.IOException; 
import java.io.InputStream; 
import java.util.ArrayList; 
import java.util.List; 

import org.apache.http.HttpResponse; 
import org.apache.http.NameValuePair; 
import org.apache.http.client.ClientProtocolException; 
import org.apache.http.client.HttpClient; 
import org.apache.http.client.ResponseHandler; 
import org.apache.http.client.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.entity.StringEntity; 
import org.apache.http.impl.client.BasicResponseHandler; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicHeader; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.params.HttpConnectionParams; 
import org.apache.http.protocol.HTTP; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.Looper; 
import android.util.Log; 
import android.widget.Toast; 

public class post extends Activity{ 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    postData(); 
} 


public void postData() { 
    // Create a new HttpClient and Post Header 
    HttpClient httpclient = new DefaultHttpClient(); 

    HttpPost httppost = new HttpPost("http://192.168.83.1/test.php"); 

    try { 
     // Add your data 
     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2); 
     nameValuePairs.add(new BasicNameValuePair("id", "12345")); 
     nameValuePairs.add(new BasicNameValuePair("stringdata", "Hi")); 
     httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs)); 

     // Execute HTTP Post Request 
     ResponseHandler<String> responseHandler=new BasicResponseHandler(); 

     String responseBody = httpclient.execute(httppost, responseHandler); 
     Log.d("test", responseBody); 
     // Toast.makeText(getApplicationContext(), responseBody, Toast.LENGTH_LONG).show(); 

    } catch (ClientProtocolException e) { 
     // TODO Auto-generated catch block 
    } catch (IOException e) { 
     // TODO Auto-generated catch block 
    } 
} 

文件的test.php的內容是:

<?php 

echo"works"; 

?> 

的Log.d( 「測試」 ,responseBody);標記不會出現在LogCat上。但是,如果我將它移動幾行(在responseBody之前)並放置一段靜態文本,它可以工作

HTTPRequest是否存在問題?怎麼可能解決

謝謝!

+0

而是首先使用PHP測試靜態HTML的:只需添加「作品」到test.php的並刪除 powtac 2013-03-22 11:56:33

回答

6

嘗試刪除BasicResponseHandler後。它應該工作。在Menifest檢查perticuler許可

HttpResponse response = httpclient.execute(httppost); 
String responseBody = EntityUtils.toString(response.getEntity()); 
+0

我認爲你發佈的內容存在錯誤。我收到多個錯誤。 httpClient.execute(httpost);不會按照eclipse返回一個字符串:| – Anant 2013-03-22 16:27:04

+0

對不起,朋友是我的錯。我忘了在這裏寫一個lile ..我更新了我的答案.. – Ajay 2013-03-23 05:41:10