2014-03-04 4 views
1

서버에 연결하기 위해 Java 클래스 (클라이언트)를 만들었습니다. JSON 객체를 서버에 보내고 응답을 다시받는 것입니다.Java 클래스를 클라이언트로 사용하여 JSON 객체 보내기

저는 이미 JSON 개체를 가지고 있지만 JSON 개체를 Java의 서버로 보내는 방법을 모릅니다.

+0

를로 보낼 수있는 이점은 무엇 Object가 아니라 JSON 문자열입니까? 서버 란 무엇입니까? (HTTP/소켓?) –

답변

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

도움을 주셔서 감사합니다. 독립 실행 형 응용 프로그램에서이 기능을 사용할 수 있습니까? 내 응용 프로그램은 웹 응용 프로그램이 아니기 때문에 – user3377374

+0

예 독립 실행 형 응용 프로그램에서 작동합니다. – Engineer

+0

aaah 덕분에 서버에 요청을 보낼 수있었습니다. :) 그러나 나는 gettign 오류 : 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

당신이 JSON 문자열에 Java 개체 변환 서버로 전송 JacksonJSON 프로세서를 사용할 수 있습니다 도움이 시도. 당신이 연결되어있는 경우 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(); 

또는 :

ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter(); 
String jsonString = ow.writeValueAsString(yourObject); 

그런 다음 서버에 문자열을 게시 HTTPClient을 사용할 수 있습니다

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(); 
관련 문제