我正在实现一个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参数?如果是的话,应该怎么做?例如,如果在上面的代码中,电子邮件是一个整数,密码是一个布尔值(在示例中),我应该如何处理它们?
提前谢谢大家!
答案 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);
}