2015-05-24 36 views
0

我有一個android應用程序,它嘗試向django服務器註冊用戶,並向json發送POST請求。android - 用json發送POST到django服務器

響應代碼我得到的是500內部服務器錯誤

的Android代碼:

httpClient = new DefaultHttpClient(); 
registerUserRequest = new HttpPost("http://10.100.102.9:8000/users/register"); 

public void registerUser(){ 


    Map<String, String> userMap = new HashMap<String, String>(); 
    userMap.put("username", "UserName"); 
    userMap.put("password", "12345"); 
    userMap.put("first_name", "first"); 
    userMap.put("last_name", "last"); 

    JSONObject obj=new JSONObject(params); 

    StringEntity se = new StringEntity(obj.toString()); 
    registerUserRequest.setEntity(se); 
    registerUserRequest.setHeader("Content-type", "application/json"); 
    new executeRequest().execute(registerUserRequest); 
} 

private class executeRequest extends AsyncTask<HttpRequest, Void, Integer> 
{ 

    @Override 
    protected Integer doInBackground(HttpRequest... params) { 
     // TODO Auto-generated method stub 
     HttpRequest request = params[0]; 
     int responseCode = -1; 
     ResponseHandler responseHandler = new BasicResponseHandler(); 
     HttpResponse response; 
     try { 
      response = httpClient.execute(registerUserRequest, 
        responseHandler); 

      Log.d("Response of REGISTER_USER request", response.toString()); 
      responseCode = response.getStatusLine().getStatusCode(); 
     } catch (ClientProtocolException e) { 
      // This exception raised 
      e.printStackTrace(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
     return responseCode; 
    } 

} 

提出的例外是在的AsyncTask ClientProtocolException。

的Django代碼:

class UserViewSet(viewsets.ReadOnlyModelViewSet): 
    queryset = User.objects.all() 
    serializer_class = UserSerializer 

    @list_route(methods=['post']) 
    def register(self, request): 
     serializer = UserSerializer(data=request.DATA) 
     if serializer.is_valid(): 
      user = User.objects.create_user(
       username = serializer.init_data['username'], 
       password = serializer.init_data['password'], 
       first_name = serializer.init_data['first_name'], 
       last_name = serializer.init_data['last_name'], 
      ) 

      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     else: 
      return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

的URL是好的我測試了它 - 「http://10.100.102.9:8000/users/register

錯誤:響應代碼我得到的是500內部服務器錯誤

05-24 13:05:14.317: W/System.err(15625): org.apache.http.client.HttpResponseException: INTERNAL SERVER ERROR 
05-24 13:05:14.317: W/System.err(15625): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:71) 
05-24 13:05:14.327: W/System.err(15625): at org.apache.http.impl.client.BasicResponseHandler.handleResponse(BasicResponseHandler.java:59) 
05-24 13:05:14.337: W/System.err(15625): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:657) 
05-24 13:05:14.337: W/System.err(15625): at org.apache.http.impl.client.AbstractHttpClient.execute(AbstractHttpClient.java:627) 

任何想法爲什麼會發生這種情況?

謝謝!

+0

請張貼錯誤。 – Wtower

+0

你的意思是在客戶端?編輯我的問題 –

+0

我的意思是您的服務器中的Django返回到您的客戶端的錯誤。 – Wtower

回答

2

500內部服務器錯誤意味着服務器端代碼不是移動端的錯誤。 檢查服務器端發生的異常。