2013-03-22 104 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