android向php发送请求数据,android json httpclient使用httpresponse向php服务器发送数据

我正在尝试从和android应用程序向php服务器发送一些数据(两者都由我控制)。

应用程序中的表单上收集了大量数据,这些数据将写入数据库。这都管用。

在我的主代码中,首先我创建了一个jsonobject(在本例中,我在这里对它进行了裁剪):

JSONObject j = new JSONObject();

j.put("engineer", "me");

j.put("date", "today");

j.put("fuel", "full");

j.put("car", "mine");

j.put("distance", "miles");

接下来,我将对象传递给发送,并接收响应:

String url = "http://www.server.com/thisfile.php";

HttpResponse re = HTTPPoster.doPost(url, j);

String temp = EntityUtils.toString(re.getEntity());

if (temp.compareTo("SUCCESS")==0)

{

Toast.makeText(this, "Sending complete!", Toast.LENGTH_LONG).show();

}

HttpPoster类:

public static HttpResponse doPost(String url, JSONObject c) throws ClientProtocolException, IOException

{

HttpClient httpclient = new DefaultHttpClient();

HttpPost request = new HttpPost(url);

HttpEntity entity;

StringEntity s = new StringEntity(c.toString());

s.setContentEncoding(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));

entity = s;

request.setEntity(entity);

HttpResponse response;

response = httpclient.execute(request);

return response;

}

这将得到一个响应,但服务器将返回一个403禁止的响应。

我试着改变dopost函数一点(这实际上更好一点,正如我所说,我有很多要发送的,基本上是同一个表单的3个不同的数据-所以我创建了3个jsonobjects,每个表单条目一个-条目来自db,而不是我使用的静态示例)。

首先我把电话改了一下:

String url = "http://www.myserver.com/ServiceMatalan.php";

Map kvPairs = new HashMap();

kvPairs.put("vehicle", j.toString());

// Normally I would pass two more JSONObjects.....

HttpResponse re = HTTPPoster.doPost(url, kvPairs);

String temp = EntityUtils.toString(re.getEntity());

if (temp.compareTo("SUCCESS")==0)

{

Toast.makeText(this, "Sending complete!", Toast.LENGTH_LONG).show();

}

好的,对dopost函数的更改:

public static HttpResponse doPost(String url, Map kvPairs) throws ClientProtocolException, IOException

{

HttpClient httpclient = new DefaultHttpClient();

HttpPost httppost = new HttpPost(url);

if (kvPairs != null && kvPairs.isEmpty() == false)

{

List nameValuePairs = new ArrayList(kvPairs.size());

String k, v;

Iterator itKeys = kvPairs.keySet().iterator();

while (itKeys.hasNext())

{

k = itKeys.next();

v = kvPairs.get(k);

nameValuePairs.add(new BasicNameValuePair(k, v));

}

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

}

HttpResponse response;

response = httpclient.execute(httppost);

return response;

}

好的,这返回一个响应200

int statusCode = re.getStatusLine().getStatusCode();

但是,服务器上接收到的数据无法解析为json字符串。我认为格式不好(这是我第一次使用json):

如果在php文件中,我在$_post['vehicle']上执行echo,会得到以下结果:

{\"date\":\"today\",\"engineer\":\"me\"}

有谁能告诉我哪里出错了,或者有没有更好的方法来实现我的目标?希望上面说的有道理!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值