Reputation: 55
I am trying to communication with php server and android
Here is my JAVA file and php
// convert data into Json using gson library. -> it's fine!
String str = new TOJSON().tojson("testName", "TestPW", "testEmail", 77);
USERDATA userdata = gson.fromJson(new HTTPCONNECTION().httpPost("http://testsever.com/test.php", str).toString(), USERDATA.class);
textView textView = (TextView)findViewById(R.id.textView1);
textView.setText(userdata.getName());
// to connect php server
public class HTTPCONNECTION {
public String httpPost(String url, String str){
HttpClient client = new DefaultHttpClient();
HttpConnectionParams.setConnectionTimeout(client.getParams(), 30000);
HttpResponse response;
try {
HttpPost httppost = new HttpPost(url);
StringEntity entity = new StringEntity(str, "UTF-8");
entity.setContentType("application/json");
httppost.setEntity(entity);
HttpResponse httpResponse = client.execute(httppost);
HttpEntity httpEntity = httpResponse.getEntity();
Log.v("OWL", EntityUtils.toString(httpEntity));
return EntityUtils.toString(httpEntity);
}
catch (ClientProtocolException e) {
e.printStackTrace();
return null;
}
catch (IOException e) {
e.printStackTrace();
return null;
}
}
and php file get json data and send json data to test
$value = json_decode(stripslashes($_POST), true);
echo (json_encode($value));
Upvotes: 0
Views: 1396
Reputation: 7306
In my case on side PHP i use
$_POST = json_decode(file_get_contents("php://input"));
And on Android side
StringEntity se = new StringEntity(jsonObject.toString(),
HTTP.UTF_8);
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
request.setEntity(se);
PHP Manual - Input/Output PHP Streams
Full source of function sending POST JSON data to server from Android
public static void restApiJsonPOSTRequest(
final DefaultHttpClient httpclient, final HttpPost request,
final JSONObject jsonObject, final Handler responder,
final int responseCode, final int packetSize) {
new Thread(new Runnable() {
@Override
public void run() {
try {
try {
StringEntity se = new StringEntity(jsonObject
.toString(), HTTP.UTF_8);
se.setContentType(new BasicHeader(HTTP.CONTENT_TYPE,
"application/json"));
request.setEntity(se);
HttpResponse response = httpclient.execute(request);
HttpEntity entity = response.getEntity();
if (entity != null) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataInputStream dis = new DataInputStream(entity
.getContent());
byte[] buffer = new byte[packetSize];// In bytes
int realyReaded;
double contentSize = entity.getContentLength();
double readed = 0L;
while ((realyReaded = dis.read(buffer)) > -1) {
baos.write(buffer, 0, realyReaded);
readed += realyReaded;
sendDownloadingMessage(responder,
(double) contentSize, readed);
}
sendCompleteMessage(responder,
new InternetResponse(baos, responseCode,
request.getURI().toString()));
} else {
sendErrorMessage(responseCode, responder,
new Exception("Null"), request.getURI()
.toString());
}
} catch (ClientProtocolException e) {
sendErrorMessage(responseCode, responder, e, request
.getURI().toString());
} catch (IOException e) {
sendErrorMessage(responseCode, responder, e, request
.getURI().toString());
} finally {
httpclient.getConnectionManager().shutdown();
}
} catch (NullPointerException ex) {
sendErrorMessage(responseCode, responder, ex, request
.getURI().toString());
}
}
}).start();
}
or different way
public static void postJSONObject(final String url,
final Handler responder, final int responseCode,
final int packetSize, final JSONObject jsonObject,
final URLConnection connection) {
new Thread(new Runnable() {
@Override
public void run() {
System.out.println(connection);
sendConnectingMessage(responder);
PrintWriter writer = null;
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try {
HttpURLConnection htt = (HttpURLConnection) connection;
htt.setRequestMethod("POST");
OutputStream output = connection.getOutputStream(); // exception
// throws
// here
writer = new PrintWriter(new OutputStreamWriter(output,
"UTF-8"), true); // true = autoFlush, important!
String strJson = jsonObject.toString();
output.write(strJson.getBytes("UTF-8"));
output.flush();
System.out.println(htt.getResponseCode());
// Read resposne
baos = new ByteArrayOutputStream();
DataInputStream dis = new DataInputStream(
connection.getInputStream());
byte[] buffer = new byte[packetSize];// In bytes
int realyReaded;
double contentSize = connection.getContentLength();
double readed = 0L;
while ((realyReaded = dis.read(buffer)) > -1) {
baos.write(buffer, 0, realyReaded);
readed += realyReaded;
sendDownloadingMessage(responder, (double) contentSize,
readed);
}
sendCompleteMessage(responder, new InternetResponse(baos,
responseCode, url));
} catch (Exception e) {
sendErrorMessage(responseCode, responder, e, url);
} finally {
if (writer != null) {
writer.close();
}
}
}
}).start();
}
Upvotes: 1