我已经做了一个Java类(客户端)与服务器连接,我的要求是将JSON对象发送到服务器并获取响应。用Java类发送JSON对象作为客户端
我已经有一个JSON对象,但我不知道如何将JSON对象发送到Java服务器。
我已经做了一个Java类(客户端)与服务器连接,我的要求是将JSON对象发送到服务器并获取响应。用Java类发送JSON对象作为客户端
我已经有一个JSON对象,但我不知道如何将JSON对象发送到Java服务器。
试试这个,它可以帮助
public boolean reset() {
DataInputStream is;
DataOutputStream os;
boolean result = true;
String noReset = "Could not reset.";
String reset = "The server has been reset.";
try {
Socket socket = new Socket(InetAddress.getByName("x.x.x.x"), 3994);
String string = "{\"id\":1,\"method\":\"object.deleteAll\",\"params\":[\"subscriber\"]}";
is = new DataInputStream(socket.getInputStream());
os = new DataOutputStream(socket.getOutputStream());
PrintWriter pw = new PrintWriter(os);
pw.println(string);
pw.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
JSONObject json = new JSONObject(in.readLine());
if(!json.has("result")) {
System.out.println(noReset);
result = false;
}
is.close();
os.close();
} catch (IOException e) {
result = false;
System.out.println(noReset);
e.printStackTrace();
} catch (JSONException e) {
result = false;
System.out.println(noReset);
e.printStackTrace();
}
System.out.println(reset);
return result;
}
感谢您的帮助,这项工作是否适用于独立应用程序?因为我的应用程序不是一个Web应用程序。 – user3377374
是的,它会在独立应用 – Engineer
aaah工作,非常感谢它的工作:)能够发送请求到服务器。然而,我得到一个错误:net.sf.json.JSONException:设置属性= requestStatus类型java.lang.String时,错误,请问我可能是什么原因造成这个错误? – user3377374
使用的Restlet:
// Create the client resource
ClientResource resource = new ClientResource("http://restlet.org");
// Write the response entity on the console
resource.post(yourJsonObject).write(System.out);
可以使用JacksonJSON
处理器的Java
对象转换为JSON
字符串,并将其发送给服务器。
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
String jsonString = ow.writeValueAsString(yourObject);
然后你可以使用HTTPClient
字符串张贴到服务器:使用Sockets
DefaultHttpClient httpClient = new DefaultHttpClient();
HttpPost request = new HttpPost("http://x.x.x.x:3994");
request.addHeader("Content-Type", "application/json");
request.setEntity(jsonString);
HttpResponse response = httpClient.execute(request);
...
httpClient.getConnectionManager().shutdown();
或者,如果你连接:
Socket socket = new Socket(InetAddress.getByName("x.x.x.x"), 3994);
DataInputStream is = new DataInputStream(socket.getInputStream());
DataOutputStream os = new DataOutputStream(socket.getOutputStream());
PrintWriter pw = new PrintWriter(os);
pw.println(jsonString);
pw.flush();
BufferedReader in = new BufferedReader(new InputStreamReader(is));
JSONObject json = new JSONObject(in.readLine());
....
is.close();
os.close();
什么是将它作为优势对象而不仅仅是一个JSON字符串?什么是服务器? (HTTP?/ Socket?) –