2013-03-22 3 views
0

вот мой код, который посылает запрос HTTP:Android HTTP Response Handling

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.However, если я переместил его на несколько строк (до ответаBody) и поместил статический фрагмент текста, он работает

Есть ли проблема с HTTPRequest? Как это можно решить

Спасибо!

+0

Вместо того чтобы сначала использовать статический HTML-тест PHP, просто добавьте «Works» в test.php и удалите часть powtac

ответ

6

попробуйте удалить BasicResponseHandler. он должен работать. и проверить в Menifest для разрешения на perticuler

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

Я думаю, что есть ошибка в том, что вы опубликовали. Я получаю несколько ошибок. httpClient.execute (httpost); doesnt возвращает строку как затмение: | – Anant

+0

Извините, но это была моя ошибка. я забыл написать одну лапу здесь .. я обновил свой ответ .. – Ajay