2014-03-04 45 views
1

我已经做了一个Java类(客户端)与服务器连接,我的要求是将JSON对象发送到服务器并获取响应。用Java类发送JSON对象作为客户端

我已经有一个JSON对象,但我不知道如何将JSON对象发送到Java服务器。

+0

什么是将它作为优势对象而不仅仅是一个JSON字符串?什么是服务器? (HTTP?/ Socket?) –

回答

0

试试这个,它可以帮助

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; 
    } 
+0

感谢您的帮助,这项工作是否适用于独立应用程序?因为我的应用程序不是一个Web应用程序。 – user3377374

+0

是的,它会在独立应用 – Engineer

+0

aaah工作,非常感谢它的工作:)能够发送请求到服务器。然而,我得到一个错误:net.sf.json.JSONException:设置属性= requestStatus类型java.lang.String时,错误,请问我可能是什么原因造成这个错误? – user3377374

0

使用的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); 

详情请参阅http://restlet.org/learn/tutorial/2.1/#part02

0

可以使用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(); 
相关问题