【问题标题】:500 Internal server error django java500 内部服务器错误 django java
【发布时间】:2015-03-05 10:54:24
【问题描述】:

我正在从我的 Java 应用程序向我的 Django 应用程序(在同一台机器上)发送一个 Java 发布请求(JSON 对象)。

我的 java 请求部分代码是:

    HttpClient client = new DefaultHttpClient();
    HttpPost post = new HttpPost(myurl);
    String json = jsonobject;

    StringEntity entity = new StringEntity(json,"UTF-8");
    entity.setContentType(new BasicHeader(HTTP.CONTENT_TYPE, "application/json"));
    post.setEntity(entity);
    try {
        HttpResponse response1 = client.execute(post);
        LOGGER.info("Reached " + response1);
    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

而我的Python视图函数如下:

@csrf_exempt
def rcvr1(request):
    if request.method=="POST":
        try:
            return StreamingHttpResponse("here")
        except:
            return StreamingHttpResponse("not Here")

    return StreamingHttpResponse("Unsuccessful")

来自 Java 的 post 请求正在访问服务器,但出现错误:

HTTP/1.0 500 内部服务器错误 [日期:2015 年 1 月 7 日星期三 14:00:11 GMT,服务器:WSGIServer/0.1 Python/2.7.6,X-Frame-Options:SAMEORIGIN, 内容类型:text/html]

【问题讨论】:

  • 在您的 settings.py 中添加 DEBUG=True 以查看错误
  • 已经是真的了,但是错误显示在哪里?
  • 它将在响应中,您可以从您的 java 客户端转储更多信息,但由于它在检查 POST 之前就失败了,您也可以通过 GET 使用浏览器检查它

标签: java django python-2.7


【解决方案1】:

您不能将字符串传递给StreamingHttpResponse,它必须是生成器。

在您进行更改之前,您可以改用HttpResponse 来测试上述内容。

HttpResponse("Your text here")

【讨论】:

  • 没有变化,我什至在我的 if request.method=="POST" 之前添加了打印“检查”,它没有打印“检查”,它仍然给出相同的错误 07/Jan/2015 16:04:51] "POST /jsonabc HTTP/1.1" 500 69625 - 终端(运行 django 服务器的地方)和上面提到的运行 java 代码的地方
  • 好的,我建议在您的设置中使用DEBUG=True,按照答案的建议并使用 GET 访问该 URL,因为该打印应该以任何一种方式运行。此外,如果您有任何非标准中间件,您应该在您的问题中列出它。最后检查您是否正在导入您引用的所有内容。
猜你喜欢
  • 2015-06-25
  • 2015-02-12
  • 2018-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-23
相关资源
最近更新 更多