내 앱에서 내 장고 백엔드 서버에 연결하려고합니다. http 연결을 사용하는 로컬/dev에있는 동안 안드로이드 응용 프로그램이 서버에 연결되면서 응용 프로그램을 통해 모든 API 호출에 대해 HTT 401 오류가 반환됩니다 (로그인 호출 제외). 그러나 우스운 물건은 우편 배달부를 사용하고있다, 나는 prod 서버에 도착할 수있다. SERVER_ADDR는 https://www.example.com/이며, 여기에Android to Django - 항상 표시 401
private static final String targetURL = Constants.SERVER_ADDR + APIs.tenant_get;
및 tenant_get는 apitogettenantinfo/
I입니다 :
try{
URL targetUrl = new URL(targetURL);
httpConnection = (HttpURLConnection) targetUrl.openConnection();
httpConnection.setRequestMethod("GET");
httpConnection.setRequestProperty("Authorization", "jwt " + mToken);
httpConnection.setConnectTimeout(10000); //10secs
httpConnection.connect();
Log.i(TAG, "response code:" + httpConnection.getResponseCode());
if (httpConnection.getResponseCode() != 200){
Log.e(TAG, "Failed : HTTP error code : " + httpConnection.getResponseCode());
return Constants.Status.ERR_INVALID;
}
//Received Response
InputStream is = httpConnection.getInputStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is));
String line;
while((line = rd.readLine()) != null) {
response.append(line);
//response.append('\r');
}
rd.close();
Log.i(TAG, response.toString());
// Save the tenant details
return parseTenantInfo(response.toString());
}catch (MalformedURLException e) {
e.printStackTrace();
return Constants.Status.ERR_NETWORK;
} catch (SocketTimeoutException e) {
e.printStackTrace();
return Constants.Status.ERR_NETWORK;
}
catch (IOException e) {
e.printStackTrace();
return Constants.Status.ERR_UNKNOWN;
}finally {
if(httpConnection != null) {
httpConnection.disconnect();
}
}
다음은 대상 URL입니다 :
다음은 (안드로이드) 코드 조각 중 하나입니다 항상 401 오류가 발생합니다. 친절하게 도와주세요 !!! 감사.
가장 짜증나는 것은 우편 배달부 작품이며, 안드로이드 로그인 작업입니다. 그래서 서버에서 아무런 문제가없는 것입니다 (그렇지 않으면 우편 배달부는 어떻게 작동할까요?). 그리고 안드로이드 문제가 무엇인지 이해할 수 없습니다.
편집 :
다음은 내 우편 배달부의 스크린 샷입니다. 몇 가지가 보안 & 개인 정보 보호를 위해 밖으로 검게됩니다
http://imageshack.com/a/img923/231/wUrOuS.png
봐이 [https://tools.ietf.org/html/rfc2616#section-10.4.2](https://tools.ietf.org/html/rfc2616#section-를 제거 10.4.2). – KeLiuyue
'mToken'의 값은 무엇입니까? 우편 배달부에서와 같은가요? –
요청에 사용자 인증이 필요합니다. 응답은 요청 된 자원에 적용 가능한 챌린지를 포함하는 WWW-Authenticate 헤더 필드 (14.47 절)를 포함해야합니다 (MUST). 클라이언트는 적합한 Authorization 헤더 필드 (14.8 절)로 요청을 반복 할 수있다. – KeLiuyue