2012-04-20 4 views
2

Во-первых, я получаю код состояния 200. В php-скрипте у меня просто есть код, который я отправляю на сервер (во время попытки и отладки). Использование var_dump $ _POST или $ _REQUEST Я получаю пустое электронное письмо. Если я запустил foreach на $ _SERVER, я верну некоторые данные назад, как HTTP_USER_AGENT: Apache-HttpClient/UNAVAILABLE (java 1.4) и CONTENT_LENGTH: 9Android http post не отправляет данные

Не понимаю, почему нет данных для публикации? Я новичок в андроиде, я буквально учась, когда я ухожу.

HttpClient httpclient = new DefaultHttpClient(); 
    HttpPost httppost = new HttpPost(dest_url); 
    //httppost.setHeader("Accept", "application/json"); 
    //httppost.setHeader("Content-type", "application/json"); 

//JSONObject json = new JSONObject(); 

     // Add your data 
     //json.put("action", "login"); 
     //json.put("username", "kermit"); 
     //json.put("password", "123456"); 

    ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(); 
    //nameValuePairs.add(new BasicNameValuePair("myjson", json.toString())); 
    nameValuePairs.add(new BasicNameValuePair("plswork", "hi")); 
    httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, HTTP.UTF_8)); 

    //StringEntity str_json = new StringEntity(json.toString()); 

    //httppost.setEntity(str_json); 
    HttpResponse response; 

    response = httpclient.execute(httppost); 

У моего manifestxml есть следующая строка;

<uses-permission android:name="android.permission.INTERNET"></uses-permission> 

Это мой импорт;

import java.io.IOException; 
import java.util.ArrayList; 
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.entity.UrlEncodedFormEntity; 
import org.apache.http.client.methods.HttpPost; 
import org.apache.http.impl.client.DefaultHttpClient; 
import org.apache.http.message.BasicNameValuePair; 
import org.apache.http.protocol.HTTP; 
import org.json.JSONObject; 

import android.app.Activity; 
import android.content.SharedPreferences; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.EditText; 
import android.widget.TextView; 
import android.widget.Toast; 

ответ

3

Скорее всего, это что-то делать с

httppost.setHeader("Content-type", "application/json"); 

application/json не является нормальным тип контента для представления HTTP POST формы. Учитывая, что вы на самом деле не посылать JSON, а стандартный объект POST (nameString = valueString), попробуйте изменить это

httppost.setHeader("Content-Type", "application/x-www-form-urlencoded") 

и посмотреть, будет ли это упорядочивать вопрос. Или еще лучше, удалите его все вместе.

Я использую этот код в моем приложении - и это работает прекрасно:

HttpPost httppost = new HttpPost(SERVER_URL); 
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1); 
nameValuePairs.add(new BasicNameValuePair("REQUEST", req)); 
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs, "UTF-8")); 
HttpResponse response = httpclient.execute(httppost); 

Ответ в данном случае text/xml - но это не имеет значения.

+1

Я уже прокомментировал эту строку. Я добавил то, что вы сказали, но это не имеет никакого значения. –

+0

@ I.am.Will Просто из любопытства попробуйте прокомментировать все строки 'setHeader'. Оставьте только конструктор для сообщения и установите объект - и затем выполните сообщение. Также убедитесь, что ваш PHP-код верен - возможно, он получает запрос, но вы не пересылаете его правильно. –

+0

Не испугался. Мой php-файл для тестирования содержит; '); ?> –

Смежные вопросы