I am having trouble getting the android POST request for a simple JSONObject that will display in $ _POST data on the server. The PHP server is 5.3.4, and the android side is the SDK 8 emulator. I can publish a simple NameValuePair as usual and it appears, but when I switch to JSONObject + StringEntity, which you see below, the $ _POST array shows {}. Go ahead and run the code below on my test php page. It has var_dump $ _POST and $ _SERVER, and also searches for one of the expected keys ("email"). You will see that I tried a lot of "ContentType" to make sure this is a problem. I even used WireShark to verify that the TCP conversation looks good between the client and server. POST data is there, but not displayed on the servers. I'm stuck ... thanks for any help,which you can offer.
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);
HttpResponse response;
String URL = "http://web-billings.com/testPost.php";
try{
HttpPost post = new HttpPost(URL);
JSONObject jObject = new JSONObject();
jObject.put("email", email);
jObject.put("password", pwd);
StringEntity se = new StringEntity(jObject.toString());
se.setContentType("application/json;charset=UTF-8");
post.setEntity(se);
Log.i("main", "TestPOST - String entity 'se' = "+GetInvoices.convertStreamToString(se.getContent()));
response = client.execute(post);
if(response!=null){
InputStream in = response.getEntity().getContent();
String message = GetInvoices.convertStreamToString(in);
Log.i("main", "P2DB - Connect response = "+message);
}
}
catch(Exception e){
e.printStackTrace();
}
}
}
testPost.php, :
<?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 '</pre>';
die;
?>