2014-10-07 4 views
1

Java 서버 응용 프로그램에서 HTTP PUT 메시지 (JSON 형식)에 액세스하려면 어떻게합니까? HTTP PUT은 Python 클라이언트에서 전송됩니다. 지금까지RESTful PUT 구문 분석

파이썬 클라이언트 :

import http.client 
    import urllib 

    values = {'s':'basic','submit':'search'} 
    data = urllib.parse.urlencode(values) 


    headers = headers['Content-length']=str(len(bytes(data, 'utf-8'))) 
    connection = http.client.HTTPConnection('localhost',8080) 
    connection.request("PUT", "/file", body=data.encode("utf-8")) 

PUT는 자바 서버에 도달 - 어떻게 메시지 (파이썬에서 데이터를)받을 수 있나요?

지금까지, 이것은 내가 자바에있는 것입니다 :

import java.io.*; 
import java.net.*; 

class JavaServer { 

    public static void main(String args[]) throws Exception { 

     String fromclient; 

     ServerSocket Server = new ServerSocket (8080); 

     System.out.println("TCPServer Waiting for client on port 8080"); 

     Socket connected = Server.accept(); 
     System.out.println(" THE CLIENT"+" "+ connected.getInetAddress() +":"+connected.getPort()+" IS CONNECTED "); 

     BufferedReader inFromClient = new BufferedReader(new InputStreamReader (connected.getInputStream())); 

     fromclient = inFromClient.readLine(); 
     System.out.println("RECIEVED:" + fromclient); 

    } 
} 
+1

이보다 더 자세한 정보가 필요합니다 – DreadHeadedDeveloper

+0

일반 Java 또는 java ee가있는 서버를 사용하고 있습니까? – rekiem87

+0

일반 자바지만 아파치 서버에 넣어 것입니다 – user4109372

답변

2

당신은 당신의 "inFromClient"반복해야합니다

그래서 같은 :

while((fromclient = inFromClient.readLine()) != null){ 
     System.out.println("RECIEVED:" + fromclient); 
    } 
    inFromClient.close(); 
+0

감사합니다. 그게 효과가 있었어. 나는 또한이 StringBuilder 버퍼를 찾았습니다 = new StringBuilder(); 문자열 줄; while ((line = inFromClient.readLine())! = null) {buffer.append (line); } System.out.println ("buffer.toString ="+ buffer.toString()); 그러나 json 메시지는 많은 추가 문자가있는 것 같아서 혼란이있는 것 같습니다. JSON을 처음 사용하는 순간입니다. 어쩌면 정상이거나 아니면 큰 따옴표가 필요합니다. 실제로 시간과 IP 주소와 값을 보내고 있습니다. 숫자에는 JSON과 함께 특별한 형식이 필요합니까? – user4109372

+0

좋은 결과를 얻었습니다. 루프에서 벗어나지 않기 때문에 문제가 있습니다. 아무리해도 나는 의견을 바꿨다! 건배! =) – LMG

+0

나는 그걸 알아 차렸다. python 클라이언트가 종료되면 루프가 종료됩니다. 파이썬 코드는 아마 수정이 필요합니다. –

0

감사합니다. 그게 효과가 있었어. 나는 또한 그냥이 발견 또한 작동

StringBuilder buffer = new StringBuilder(); 
String line; 
while ((line = inFromClient.readLine()) != null) { 
buffer.append(line); 
} 

System.out.println("buffer.toString = " + buffer.toString()); 

을하지만, JSON 메시지가 추가 문자를 많이 갖고있는 것 같아요 및 혼합 것으로 보인다. JSON을 처음 사용하는 순간입니다. 어쩌면 정상이거나 아니면 큰 따옴표가 필요합니다. 실제로 시간과 IP 주소와 값을 보내고 있습니다. 숫자에는 JSON과 함께 특별한 형식이 필요합니까?