gpt4 book ai didi

android - Json 可能在 setEntity 附近不使用 HttpPost

转载 作者:太空宇宙 更新时间:2023-11-03 11:51:12 26 4
gpt4 key购买 nike

我正在使用此代码将其发送到我的 php 文件。该文件看起来像这样。

file_put_contents('dump.txt', "POST: \n" . print_r($_POST, true) . "\n\n\n GET: \n" . print_r($_GET, true));

我发送的 json 是这样的:

public void postData(String url,JSONObject json) {
HttpClient httpclient = new DefaultHttpClient();
String object = "?data=" +json.toString();
System.out.println("object:" + object);
try {
HttpPost httppost = new HttpPost(url.toString());
httppost.setHeader("Content-type", "application/json");
System.out.println("url:" + url.toString());
StringEntity se = new StringEntity(object);
System.out.println("json:" + json.toString());

se.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
httppost.setEntity(se);

HttpResponse response = httpclient.execute(httppost);
String temp = EntityUtils.toString(response.getEntity());
System.out.println("response:" + response);

int statusCode = response.getStatusLine().getStatusCode();
System.out.println("Statuscode " + statusCode);

if(statusCode==200) {
Toast.makeText(LbsGeocodingActivity.this, "Verstuurd", Toast.LENGTH_LONG).show();
}
else if(statusCode!=200) {
Toast.makeText(this, statusCode, Toast.LENGTH_LONG).show();
}
/* try {
String responseBody = EntityUtils.toString(response.getEntity());
Toast.makeText(this, responseBody, Toast.LENGTH_LONG).show();
} catch (ParseException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}*/
}
catch (ClientProtocolException e) {

}
catch (IOException e) {
}
}

日志文件是这样的:

01-08 09:36:00.278: I/System.out(1124): object:?data={"id":"69403","timestamp":"08-01-2013 09:36:00","longitude":"-122.084095","latitude":"37.422005"}
01-08 09:36:00.298: I/System.out(1124): json:{"id":"69403","timestamp":"08-01-2013 09:36:00","longitude":"-122.084095","latitude":"37.422005"}
01-08 09:36:01.038: I/System.out(1124): response:org.apache.http.message.BasicHttpResponse@412d1b38
01-08 09:36:01.038: I/System.out(1124): Statuscode 200

出于安全原因,我省略了 url..

但我在 dump.txt 中得到一个空文件

POST: 
Array
(
)



GET:
Array
(
)

编辑

setEntity(或附近的某个地方)有问题,因为当我已经将 ?data= 粘贴到 url 中时,我从 PHP 文件中得到了这个:

POST: 
Array
(
)



GET:
Array
(
[data] =>
)

最佳答案

我在我的应用程序中使用 DefaultHttpClient 发送 JSON 的方式非常完美:

public static HttpUriRequest createPostForJSONObject(
JSONObject params, String url) {
HttpPost post = new HttpPost(url);
post.setEntity(createStringEntity(params));
return post;
}

private static HttpEntity createStringEntity(JSONObject params) {
StringEntity se = null;
try {
se = new StringEntity(params.toString(), "UTF-8");
se.setContentType("application/json; charset=UTF-8");
} catch (UnsupportedEncodingException e) {
Log.e(TAG, "Failed to create StringEntity", e);
exception = e;
}
return se;
}

为了在您的代码中运行此请求,您需要做的就是:

public void postData(String url,JSONObject json) {
HttpClient httpclient = new DefaultHttpClient();
try {
HttpPost post = createPostForJSONObject(json, url);
HttpResponse response = httpClient.execute(post);
// DO YOUR THING
} catch Exception {
// HANDLE EXCEPTION
}
}

关于android - Json 可能在 setEntity 附近不使用 HttpPost,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14119410/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com