任何人都可以向我推荐一个简单的资源,解释如何在Java中使用JSON对象作为数据进行HTTP POST吗?我希望能够在不使用Apache HTTP Client的情况下完成此操作。
以下是我迄今为止所做的工作。我试图弄清楚如何用JSON修改它。
public class HTTPPostRequestWithSocket {
public void sendRequest(){
try {
String params = URLEncoder.encode("param1", "UTF-8")
+ "=" + URLEncoder.encode("value1", "UTF-8");
params += "&" + URLEncoder.encode("param2", "UTF-8")
+ "=" + URLEncoder.encode("value2", "UTF-8");
String hostname = "nameofthewebsite.com";
int port = 80;
InetAddress addr = InetAddress.getByName(hostname);
Socket socket = new Socket(addr, port);
String path = "/nameofapp";
// Send headers
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream(), "UTF8"));
wr.write("POST "+path+" HTTP/1.0rn");
wr.write("Content-Length: "+params.length()+"rn");
wr.write("Content-Type: application/x-www-form-urlencodedrn");
wr.write("rn");
// Send parameters
wr.write(params);
wr.flush();
// Get response
BufferedReader rd = new BufferedReader(new InputStreamReader(socket.getInputStream()));
String line;
while ((line = rd.readLine()) != null) {
System.out.println(line);
}
wr.close();
rd.close();
socket.close();//Should this be closed at this point?
}catch (Exception e) {e.printStackTrace();}
}
}
答案 0 :(得分:0)
JSON只是一个字符串。
只需将json对象添加为帖子值。
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("jsonData", new JSONObject(json)));//json
params.add(new BasicNameValuePair("param1", "somevalue"));//regular post value