【问题标题】:Can't issue http requests from Android to Django webserver with Apache无法使用 Apache 从 Android 向 Django 网络服务器发出 http 请求
【发布时间】:2012-05-23 14:37:44
【问题描述】:

我正在尝试向我的 django 网络服务器(通过浏览器访问时行为正确)发出发布请求

我的邮政编码:

    HttpClient httpclient = new DefaultHttpClient();
    HttpPost httppost = new HttpPost("http://23.23.237.174/save-item");

    try {
        // Add your data
        List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
        nameValuePairs.add(new BasicNameValuePair("user_email", WeShouldActivity.ACCOUNT_NAME));
        for (Field f : mData.keySet()) {
            nameValuePairs.add(new BasicNameValuePair(f.getName(), mData.get(f)));
        }
        httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

        // Execute HTTP Post Request
        HttpResponse response = httpclient.execute(httppost);
        Log.v("GETREFERRALSSERVICE", "backing up items");

    } catch (ClientProtocolException e) {
        // TODO Auto-generated catch block
        Log.v("GETREFERRALSSERVICE", e.getMessage());
    } catch (IOException e) {
        // TODO Auto-generated catch block
        Log.v("GETREFERRALSSERVICE", e.getMessage());
    }

我在 apache2/access.log 中的完整错误(error.log 中没有显示)

174.253.199.12 - - [16/May/2012:03:25:15 +0000] "POST /save-item HTTP/1.1" 500 53055 "-" "Apache-HttpClient/UNAVAILABLE (java 1.4)"

有谁知道这可能是什么/如何解决?

注意:这是一个错误。该请求没有通过我的视图,它在浏览器中使用完全相同的 url。我首先在视图中打印出请求,但 error.log 中没有显示任何内容

【问题讨论】:

  • 在settings.py 中将自己添加到ADMINS 并设置EMAIL_HOST 和相关的EMAIL_* 设置。再次发送请求并检查您的电子邮件以获取回溯,并使用回溯更新您的问题。
  • 文档听起来好像我不需要设置 EMAIL_HOST 等。是吗?如果是这样,什么是合适的值?我将自己添加到了 ADMINS,但没有收到有关该错误的电子邮件。
  • 将其设置为系统使用的出站电子邮件服务器。您很可能还需要EMAIL_HOST_USER 和EMAIL_HOST_PASSWORD,因为大多数电子邮件服务器在没有身份验证的情况下无法发送。
  • 我没有设置电子邮件服务器...有那么难吗?如果没有,你能指点我的说明吗?

标签: java android django apache http


【解决方案1】:

试试这个:

HttpClient client = new DefaultHttpClient();    
client.getParams().setBooleanParameter("http.protocol.expect-continue", false);    

这解决了我的问题。

【讨论】:

  • 哈,这是一个早已死去的课堂项目。但我很欣赏这些信息。我的最终目标之一是恢复它并将其变成更好的东西,所以如果我这样做了,我会试试这个。
【解决方案2】:

'Apache-HttpClient/UNAVAILABLE (java 1.4)' 只是 Android 用户代理字符串,而不是错误消息。服务器端有问题,你应该尝试通过添加日志等来调试它。服务器端是否需要身份验证?如果是这样,您可能缺少会话 cookie 等。

顺便说一句,由于您似乎添加了两个以上的项目,因此使用 new ArrayList&lt;NameValuePair&gt;(2) 真的没有意义,只需使用默认构造函数即可。

【讨论】:

  • 所以从 500 状态码看来。关键是这篇文章的标题并不完全是描述性的,因为 'Apache-HttpClient/UNAVAILABLE (java 1.4)' 不是 错误消息。
猜你喜欢
  • 2010-11-13
  • 2012-02-22
  • 1970-01-01
  • 1970-01-01
  • 2014-04-30
  • 1970-01-01
  • 1970-01-01
  • 2015-09-21
  • 1970-01-01
相关资源
最近更新 更多