2012-03-30 68 views
2

我正在实现一个Android应用程序,我想在服务器中使用某些方法(这不是由我实现的)。现在,当我试图让一个HTTP-POST,我必须通过唯一字符串参数一切正常用类似代码:Android - 是否有可能使用非String参数创建一个Http-Post?

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对象,我可以很容易地使用带属性我希望。

现在有方法需要非字符串值(整数或布尔值)作为参数。我无法在列表中传递这些参数,例如List<NameValuePair>,因为这只需要字符串。我试图通过它作为一个JSON对象,但没有成功。

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

谢谢大家提前!

+0

只需传递它们的字符串表示形式? – 2012-03-30 18:15:04

+0

你的意思是“1”代表1?但服务器等待我想的整数。所以我得到一个IO异常,我认为是因为这..不是有一些方法来传递非String或http-post不允许它吗? – george 2012-03-30 18:20:13

+0

是否有正常运行的网页发布到您尝试使用的服务器资源?如果是这样,你可以使用类似Firefox的HttpFox插件或其他流量嗅探器来查看成功的HTTP请求是什么样子并模仿它的格式? – 2012-03-30 19:00:42

回答

0

当然,考虑一个文件上传。

的是二进制文件(正常,考虑上传的图片,如果有人认为文本不足够二进制)

的技术是HTTP-POST

+0

是的,我想到了..但我不知道是否一切都作为一个字符串发送和解码从服务器..所以我应该如何通过非串参数? – george 2012-03-30 18:30:29

+1

这个链接非常有用。然而,它使用urlconnection来沟通http://stackoverflow.com/questions/2793150/how-to-use-java-net-urlconnection-to-fire-and-handle-http-requests – 2012-03-30 18:46:23

+0

你必须知道的API和合同为您获取/张贴的资源。 – Shellum 2012-03-30 18:58:46

0

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

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

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

因此,在这段代码中,您将从服务器请求的参数作为一个字符串抓取,然后按照您想要的任何其他类型来形成它?那么如何将它传递给服务器呢?我很困惑.. – george 2012-03-30 18:35:27

+0

“所有http请求参数都会以字符串的形式出现”,对于post var而言是错误的。只有url参数将是“字符串” – 2012-03-30 18:38:56

+0

所有请求参数,如上例所示,您可以通过request.getParameter访问,参数为字符串:http://docs.oracle。COM/JavaEE的/ 6/API /的javax/servlet的/ ServletRequest.html – Shellum 2012-03-30 18:59:24

相关问题