Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Android发送POST json并在Django上接收_Android_Django_Post - Fatal编程技术网

从Android发送POST json并在Django上接收

从Android发送POST json并在Django上接收,android,django,post,Android,Django,Post,我正在尝试让android应用程序与Django中的服务器交互。 该应用程序正在尝试将json数据发布到Django。但是,我无法在Django端接收对象。 request.POST的值为,但发送的数据不是空的。下面是来自android的POST请求的代码片段 public static String POST(String url,JSONObject obj){ InputStream inputStream = null; String result = ""; t

我正在尝试让android应用程序与Django中的服务器交互。 该应用程序正在尝试将json数据发布到Django。但是,我无法在Django端接收对象。 request.POST的值为,但发送的数据不是空的。下面是来自android的POST请求的代码片段

public static String POST(String url,JSONObject obj){
    InputStream inputStream = null;
    String result = "";
    try{            
        HttpClient httpClient = new DefaultHttpClient();
        HttpPost httpPost = new HttpPost(url);

        String json = obj.toString();
        StringEntity se = new StringEntity(json);
        httpPost.setEntity(se);

        httpPost.setHeader("Accept", "application/json");
        httpPost.setHeader("Content-type","application/json");

        HttpResponse httpResponse = httpClient.execute((HttpUriRequest)httpPost);
        inputStream = httpResponse.getEntity().getContent();

        if(inputStream!=null){
            result = convertInputStreamToString(inputStream);
        }else{
            result = "Did not work!";
        }
    }catch(Exception e){

    }

    return result;
}
编辑: 早些时候,我遇到了CSRF错误,并以这种方式处理它。我还没有和Django合作过,不知道这是否是处理CSRF错误的正确方法

@csrf_exempt
def search(request):  
  logger.debug(request.POST)
  """Code for JSON object processing"""

如果您能帮我解决这个问题,我们将不胜感激。

好的,我的java不是很流利,但我觉得您的请求格式很好

我认为问题在于,您将数据作为json字符串发送,而不是像原始表单一样发送。这样做时,数据不会显示在request.POST中,而是按原样显示在request.body中:json字符串,而不是类似表单的数据

所以我认为你必须采取以下方法之一:

从Android应用程序以与json不同的形式发送数据。这样,您将在request.POST或 将request.body翻译成dict并使用它而不是request.POST
希望这有帮助!:

好的,我的java不是很流利,但我觉得你的请求格式很好

我认为问题在于,您将数据作为json字符串发送,而不是像原始表单一样发送。这样做时,数据不会显示在request.POST中,而是按原样显示在request.body中:json字符串,而不是类似表单的数据

所以我认为你必须采取以下方法之一:

从Android应用程序以与json不同的形式发送数据。这样,您将在request.POST或 将request.body翻译成dict并使用它而不是request.POST
希望这有帮助!:

事实上,它起了作用。json对象位于request.body中。非常感谢。确实有帮助。json对象位于request.body中。谢谢。