【发布时间】:2015-11-16 04:51:09
【问题描述】:
我正在尝试将 JSON 数据从 android 应用程序发送到 php 服务器。我只是要求服务器打印原始数据,但它没有显示在网络上。我无法弄清楚可能是什么原因。 DisplayMessageActivity.java:
public class DisplayMessageActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_display_message);
new SaveTheFeed().execute();
}
class SaveTheFeed extends AsyncTask<Void, Void, Void> {
@Override
protected Void doInBackground(Void... params) {
// Get the message from the intent
Intent intent = getIntent();
String message = intent.getStringExtra(MapsActivity.EXTRA_MESSAGE);
double longitude = intent.getDoubleExtra(MapsActivity.EXTRA_LONGITUDE, 0.0);
double latitude = intent.getDoubleExtra(MapsActivity.EXTRA_LATITUDE, 0.0);
// Create the JSONObject
JSONObject request = CreateRequest(message, longitude, latitude);
//JSONObject response = null;
URL url = null;
HttpURLConnection client = null;
try {
// Establish http connection
url = new URL("http://********.com/");
client = (HttpURLConnection) url.openConnection();
client.setDoOutput(true);
client.setDoInput(true);
client.setRequestProperty("Content-Type", "application/json; charset=UTF-8");
client.setRequestMethod("POST");
client.connect();
Log.d("doInBackground(Request)", request.toString());
// Send the JSON object to the server
OutputStreamWriter writer = new OutputStreamWriter(client.getOutputStream());
String output = request.toString();
writer.write(output);
writer.flush();
writer.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
client.disconnect();
}
return null;
}
private JSONObject CreateRequest(String message, double longitude, double latitude) {
JSONObject request = new JSONObject();
try {
request.put("message", message);
request.put("longitude", longitude);
request.put("latitude", latitude);
} catch (JSONException e) {
e.printStackTrace();
}
return request;
}
}
}
php代码:
<!DOCTYPE html>
<html>
<body>
<h2>This is your current location :)
<?php
$json = file_get_contents('php://input');
$request = json_decode($json, true);
echo ($json);
?>
</h2>
<div id="map"></div>
</body>
</html>
【问题讨论】:
-
或者我怎么知道模拟器是否真的将数据发送到url?现在我不确定哪一方有问题。
-
通过client.getResponseCode()从客户端检查respose代码,可以追踪问题
-
为什么要将json对象的String发送到服务器?参考这个androidexample.com/…
-
@San 我检查了响应代码,它是 200。我认为这意味着连接成功?但它仍然不会向服务器发布消息。