У меня проблемы с получением Android POST простого JSONObject для отображения в данных $ _POST на сервере.Сервер PHP 5.3.4, а на стороне Android - эмулятор SDK 8.Я могу опубликовать простое NameValuePair как обычно, и оно появляется, но когда я переключаюсь на JSONObject + StringEntity, который вы видите ниже, массив $ _POST показывает {}.Идите дальше и запустите приведенный ниже код на моей тестовой странице php.Он имеет переменную var_dump $ _POST и $ _SERVER, а также поиск одного из ожидаемых ключей («электронная почта»).Вы увидите, что я пробовал многочисленные ContentType, чтобы увидеть, была ли это проблема.Я даже использовал WireShark, чтобы убедиться, что TCP-диалог выглядит хорошо между клиентом и сервером.Данные POST находятся там, но они не отображаются в параметрах сервера.Я застрял ... спасибо за любую помощь, которую вы можете предложить.
import java.io.InputStream;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.HttpConnectionParams;
import org.json.JSONObject;
import android.util.Log;
public class TestPOST {
protected static void sendJson (final String email, final String pwd) {
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 10000); //Timeout Limit
HttpResponse response;
String URL = "http://web-billings.com/testPost.php";
try{
HttpPost post = new HttpPost(URL);
// NameValuePair That is working fine...
//List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
//nameValuePairs.add(new BasicNameValuePair("email", email));
//nameValuePairs.add(new BasicNameValuePair("password", pwd));
//post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
//Log.i("main", "P2DB - String entity 'se' = "+nameValuePairs.toString());
JSONObject jObject = new JSONObject();
jObject.put("email", email);
jObject.put("password", pwd);
StringEntity se = new StringEntity(jObject.toString());
//se.setContentType("charset=UTF-8");
se.setContentType("application/json;charset=UTF-8");
//se.setContentType("application/json");
//se.setContentType("application/x-www-form-urlencoded");
post.setEntity(se);
Log.i("main", "TestPOST - String entity 'se' = "+GetInvoices.convertStreamToString(se.getContent()));
response = client.execute(post);
/*Checking response */
if(response!=null){
InputStream in = response.getEntity().getContent(); //Get the data in the entity
String message = GetInvoices.convertStreamToString(in);
Log.i("main", "P2DB - Connect response = "+message);
}
}
catch(Exception e){
e.printStackTrace();
//createDialog("Error", "Cannot Establish Connection");
}
}
}
Вот страница testPost.php, если вам нравится:
<code><?php
echo "\r\n<pre>\r\n";
var_dump("\$_POST = ", $_POST)."\r\n";
echo '$_POST[\'email\'] = '.$_POST['email']."\r\n";
var_dump("\$_SERVER = ", $_SERVER)."\r\n";
echo '
';умереть;?>