Android - 是否可以使用非String参数创建Http-Post?

时间:2012-03-30 18:11:52

标签: android json parameters arguments http-post

我正在实现一个Android应用程序,我想在服务器中使用一些方法(我没有实现)。现在当我尝试创建一个http-post时,我必须只传递String参数,一切都可以正常使用如下代码:

List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);

nameValuePairs.add(new BasicNameValuePair("user[email]", email));
nameValuePairs.add(new BasicNameValuePair("user[password]", password));

httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

ResponseHandler<String> responseHandler=new BasicResponseHandler();
String responseBody = httpclient.execute(httppost, responseHandler);
JSONObject response=new JSONObject(responseBody);   
System.out.println("RESPONSE " + response.toString());

我将响应作为json对象获取,我可以轻松地使用它来获取我想要的属性。

现在有些方法需要非String值(整数或布尔值)作为参数。我不能在List<NameValuePair>这样的列表中传递这些参数,因为这只需要字符串。我试图将它作为json对象传递,但没有成功。

所以我的第一个问题是,是否可以在http post中使用非String参数?如果是的话,应该怎么做?例如,如果在上面的代码中,电子邮件是一个整数,密码是一个布尔值(在示例中),我应该如何处理它们?

提前谢谢大家!

2 个答案:

答案 0 :(得分:0)

当然,请考虑上传文件。

该文件是二进制的(好吧,如果有人认为文本不够二进制,请考虑上传图片)

该技术是一个http-post

答案 1 :(得分:0)

所有http请求参数都将以字符串形式出现,但服务器端代码可以转换它们。例如,服务器可以从请求参数中获取JSON字符串,并将其转换为包含任意数量的序列化数据的对象。这可能包括整数,列表等。

虽然实现依赖于服务器端代码。例如,客户端和服务器都可以使用GSON来回发送对象和列表。

public void doPost(...)
{
    String param = request.getParameter("someParam");
    MyCustomObject myCustomObject = (MyCustomObject)gson.fromJson(param, MyCustomObject.class);
}