【发布时间】:2015-07-14 18:48:50
【问题描述】:
我正在尝试将 JSON 后数组发送到 PHP 服务器。该数组包含 PHP 将解码的单独对象/票证。 Android 将数据从其本地数据库加载到 JSON 对象中就好了。我可以记录它提取的数据并在将其发送到 PHP 服务器之前查看它。在服务器端,数据不会成功。它正在发送一个空数组。
我的代码:
public void sendQueuedTickets() {
// Check queue for tickets.
if (dbc.checkQueTickets() != null) {
String[] userInfo;
Cursor cursor = dbc.checkQueTickets();
int columns = cursor.getColumnCount();
int rows = cursor.getCount();
final ArrayList<Integer> queueIDs = new ArrayList<>();
JSONArray arr = new JSONArray();
cursor.moveToFirst();
// Get user info.
userInfo = dbc.checkCredentials();
// Add user info and request type to params so server knows what we're doing.
JSONObject jobj = new JSONObject();
try {
jobj.put("username", userInfo[0]);
jobj.put("serverUserID", userInfo[2]);
jobj.put("request", "submitTicket");
} catch (JSONException e) { e.printStackTrace(); }
// Add SQL tickets to params to be sent.
for (int r = 0; r < rows; r++) {
for (int c = 0; c < columns; c++) {
try {
jobj.put(cursor.getColumnName(c), cursor.getString(c));
} catch (JSONException e) { e.printStackTrace(); }
}
arr.put(jobj);
queueIDs.add(cursor.getInt(0)); // id column value.
cursor.moveToNext();
}
// Send ticket(s) to remote server.
// Set timeout parameters.
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 5000);
// Continue with http request.
HttpClient client = new DefaultHttpClient(httpParameters);
HttpContext httpContext = new BasicHttpContext();
HttpPost httpPost = new HttpPost("http://" + userInfo[3] + "." + dbc.REMOTE_SERVER_URL);
try {
StringEntity se = new StringEntity(arr.toString());
httpPost.setEntity(se);
httpPost.setHeader("Accept", "application/json");
httpPost.setHeader("Content-type", "application/json");
HttpResponse response = client.execute(httpPost, httpContext);
String resFromServer = org.apache.http.util.EntityUtils.toString(response.getEntity());
System.out.println(resFromServer);
// Delete queued ticket(s) if sent transaction successful.
if (resFromServer.contains("successfulSubmit")) {
for (int r = 0; r < rows; r++) {
dbc.deleteQueTicket(queueIDs.get(r));
}
}
} catch (Exception e) { e.printStackTrace(); }
}
}
【问题讨论】:
-
我们可以看看您是如何在服务器端捕获发送的数据的吗?
-
halfer,我设法丢失了我正在使用的原始代码。我确实知道我正在查看是否设置了 $_POST['json'] 不起作用。
-
@ChrisC。你的服务器端代码在哪里