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)
任何想法爲什麼會發生這種情況?
謝謝!
請張貼錯誤。 – Wtower
你的意思是在客戶端?編輯我的問題 –
我的意思是您的服務器中的Django返回到您的客戶端的錯誤。 – Wtower