데이터를 사용하여 새 사용자를 DB에 등록하여 json을 우편으로 보내는 몇 가지 테스트를 수행하고 있습니다. 서버는 테스트를 위해 정적 문자열을 반환합니다. 콘솔과 CURL을 사용하여 적절한 응답을 받고 있습니다.
curl --data '' http://127.0.0.1:3000/api/user/register
<!DOCTYPE html><html><head><title>Express</title><link rel="stylesheet" href="/stylesheets/style.css"></head><body><h1>Express</h1><p>Welcome to Express</p></body></html>
POSTMAN 확장이 동일한 URL에 게시 요청을 보내는 경우에도 적절한 응답을 받고 있습니다. 그러나 아래 코드는 서버에서 응답을받지 않습니다. 무엇이 빠졌습니까?. 오류가 발생하지 않고 일반 문자열 인 디버거를 확인한 후 json이 정확합니다 (중요하지 않지만 누구나 알고 싶어하는 경우). 디버거가이 줄에서 실패합니다.
Response response = client.newCall(request).execute();
private void createUser(String name, String email, String password){
//create JSON
final String userJson = formatUserAsJSON(name,email,password);
//send JSON
new AsyncTask<Void,Void,String>(){
@Override
protected String doInBackground(Void... voids) {
try {
//1.create client Object
OkHttpClient client = new OkHttpClient();
//2.Define request being sent to server
RequestBody postData=new FormBody.Builder()
.add("json",userJson)
.build();
Request request=new Request.Builder()
.url("http://127.0.0.1:3000/api/user/register")
.post(postData)
.build();
//3.Transport the request and wait for response to process next
Response response = client.newCall(request).execute();
String result = response.body().string();
return result;
} catch (Exception e) {
Log.d("error_connection","couldn't connect to the API");
return null;
}
}
}.execute();
}
이 문제에 대한 의견을 보내 주시면 감사하겠습니다. 감사합니다
편집 : 서버가 응답을 제공하지 않아 안드로이드 앱이 도달하지 못했습니다. 우분투 콘솔에 표시되고 nodejs가 요청 메시지를 인쇄하지 않습니다 .....
편집 2 : Android 매니페스트에서 네트워크에 액세스 할 수있는 사용자 권한이 있으므로 그렇지 않습니다 .....
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
나는 127.0.0.1이 Genymotion 에뮬레이터 자체를 참조하고 있었기 때문에 서버의 네트워크 IP를 넣는 문제를 해결했습니다 (공용 인터넷 IP를 넣으면 작동합니다. 시도했습니다). 하지만 그게 답이었습니다. 지원 해주신 모든 분들께 감사드립니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다