2017-11-30 4 views
0

Android를 Node.js에 연결하려고합니다. 포트 3000을 사용하여 로컬 호스트에 서버를 실행하고 있습니다. 우편함을 사용하는 POST 메서드에서 데이터를 시도 할 때 완벽하게 작동하지만 Android Android와 동일한 작업을 수행 할 때도 마찬가지입니다. HttpUrlConnection 클래스 결과입니다. ¿ 안드로이드를 Node.js와 연결하는 방법은 무엇입니까?

Result in the server

은 Node.js를

router.post('/', (req, res)=>{ 
    console.log(req.query); 
    res.send({ 
    mensaje: 'I am from usuario routes' 
    }); 
}); 

에서 테 코드와이 서버에 연결하기 전에 데이터를 작성해야 안드로이드

URL obj = new URL("http://192.168.1.107:3000/"); 
JSONObject jsonObject = new JSONObject(); 
jsonObject.put("image", "imagen"); 
String data = jsonObject.toString(); 
HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
con.setDoOutput(true); 
//con.setDoInput(true); 
con.setRequestMethod("POST"); 
con.setConnectTimeout(5000); 
con.setFixedLengthStreamingMode(data.getBytes().length); 
con.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 
con.connect(); 

OutputStream out = new BufferedOutputStream(con.getOutputStream()); 
BufferedWriter wrt = new BufferedWriter(new OutputStreamWriter(out, "UTF-8")); 
wrt.append(data); 
wrt.flush(); 

wrt.close(); 
out.close(); 
con.disconnect(); 
+0

'con.setDoInput (true) '를 사용해 보셨습니까? – Gianlu

+0

네,하지만 문제는 서버가 아무것도받지 않고 요청 만 받고 데이터는 수신하지 않는다는 것입니다. –

답변

0

안드로이드의 요청은 완벽하지만, 노드 i에서 바디를 변환하는 데 미들웨어를 사용하지 않았기 때문에 body-parse 모듈을 사용하고 작동합니다.

0

에서입니다 :

URL obj = new URL("http://192.168.1.107:3000/"); 

JSONObject jsonObject = new JSONObject(); 
jsonObject.put("image", "imagen"); 
String data = jsonObject.toString(); 

HttpURLConnection con = (HttpURLConnection) obj.openConnection(); 
con.setDoOutput(true); 
con.setDoInput(true); 
con.setRequestMethod("POST"); 
con.setConnectTimeout(5000); 
con.setFixedLengthStreamingMode(data.getBytes().length); 
con.setRequestProperty("Content-Type", "application/json; charset=utf-8"); 

OutputStream os = con.getOutputStream(); 
BufferedWriter wrt = new BufferedWriter(new OutputStreamWriter(os, "UTF-8")); 
wrt.append(data); 
wrt.flush(); 
wrt.close(); 
os.close(); 

con.connect(); 
+0

작동하지 않는다 :(.... 나는 디버깅을하고 있는데, 다음 줄에서'wrt.flush()'를 할 때 여전히'wrt'가 데이터를 가지고있다 ... 나는 데이터가 없다고 생각한다. 서버에서 비어있는'req.query'가 왔기 때문에 요청을 전송합니다. –

+0

@DavidSotelo BufferedWriter를 단순화했습니다. 이제 시도해보십시오. – Gianlu

관련 문제