Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/google-app-engine/4.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
什么是Apache HttpClient/UNAVAILABLE错误(Android、Google应用程序引擎)?_Android_Google App Engine_Http_Clojure - Fatal编程技术网

什么是Apache HttpClient/UNAVAILABLE错误(Android、Google应用程序引擎)?

什么是Apache HttpClient/UNAVAILABLE错误(Android、Google应用程序引擎)?,android,google-app-engine,http,clojure,Android,Google App Engine,Http,Clojure,我正面临一个我不知道如何解释的问题。我正在做一个使用Android和谷歌应用程序引擎的项目。当我试图直接从servlet(硬编码)将信息保存到Google App Engine的大表中时,保存是毫无问题的。但是,当我试图从Android设备保存数据时,不会执行保存,并且日志显示Apache HttpClient/UNAVAILABLE错误。更具体地说: 405 55ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4) 82.155.246.249 - -

我正面临一个我不知道如何解释的问题。我正在做一个使用Android和谷歌应用程序引擎的项目。当我试图直接从servlet(硬编码)将信息保存到Google App Engine的大表中时,保存是毫无问题的。但是,当我试图从Android设备保存数据时,不会执行保存,并且日志显示Apache HttpClient/UNAVAILABLE错误。更具体地说:

405 55ms 0kb Apache-HttpClient/UNAVAILABLE (java 1.4)
82.155.246.249 - - [10/Jun/2013:05:20:59 -0700] "POST /servletnamehere HTTP/1.1"           405 306 - "Apache-HttpClient/UNAVAILABLE (java 1.4)" "appnamehere.appspot.com" ms=56 cpu_ms=21 cpm_usd=0.000034 app_engine_release=1.8.0 instance=00c61b117cede3f754aa1ece730dc88287a20199
我已经看到405 HTTP错误出现在POST方法的上下文中(“405错误经常出现在POST方法中。您可能试图在网站上引入某种输入表单,但并非所有ISP都允许POST方法处理表单。”)=>事实上,我正在尝试执行add(对象是JPA实体)在数据库中使用POST方法。我从Android设备接收的数据是通过输入流序列化的(在我的情况下,使用JSON不是一个选项,这些是规范)

另外,306 HTTP错误引用到交换机代理。虽然明显的错误可能有点直观,但这个错误超出了我的学生的知识范围

我已经遵循了本教程()的说明,这确实是我所需要的,但我真的无法找出我做错了什么。我又一次一步一步地做了这个程序,但我看不出有什么缺陷

任何帮助都将不胜感激。如果我能发布一些代码,我会很乐意的

致以最良好的祝愿, Cropcircles

稍后编辑:

现在我得到417HTTP错误预期失败。我已经看到我应该将某个参数设置为false,但此解决方法仅适用于.NET。有没有人知道下面的Java对应词是什么?我真的很困惑

     <system.net>
      <settings>
       <servicePointManager expect100Continue="false" />
      </settings>
     </system.net>

这不是答案,但对于注释来说太长了,可能会有帮助,所以这里是

首先,很难知道这里发生了什么,因为信息有限。尝试在客户端或服务器上发布更多日志记录。例如,转到服务器控制台获取更多信息,或者在客户端中添加调试。首先,我将尝试从一个调试/测试工具hurl.it中编写本文:(hurl是一个很好的命令行HTTP客户端的web前端,名为curl,如果需要更高级的查看,请参阅curl本身)。通过这种方式,您可以测试和查看,并确保您的服务器端在通用客户机上能够正常工作。然后构建其他客户端(如Android)

其次,“ApacheHttpClient/UNAVAILABLE”不是一个错误,它只是用户代理字符串——所以忽略这一部分。(版本通常不可用,但似乎有些IMPL有时无法访问该版本。)

第三,405响应代码是一个错误,这意味着在您试图发布到的服务器上不允许发布。这可能是因为在所述服务器上根本不允许POST,或者您违反了某些安全策略(例如同一来源)

如果是AppEngine,请首先检查您正在使用的应用程序,并确保它支持POST(查找有关如何在AppEngine上执行POST以解决问题的信息,例如:)。当你说你可以直接从一个“servlet”来做这件事时,你的意思是来自不同客户机的帖子可以工作吗?(Servlet是一种服务器端技术,所以这有点令人困惑。)如果是这样,那么请确保您的Android应用程序对同一主机以相同的方式执行客户端部分(多部分与urlencoded等)


有关安全方面的更多信息,请参阅以下帖子:

我也遇到了同样的问题,在我的情况下,这是一个错误,因为服务器端区域没有写权限。 我在遵循一个android测试,在一个文件上写一个通过POST方法异步传输的值。
Apache收到POST请求,但由于文件的安全权限,无法在该文件上写入数据

谢谢你的回答。我想我对我的问题解释得很糟糕,但这里是这样的:当试图在数据库中添加对象时,它可以工作(只要我直接在服务器上执行,对象声明为SomeClass scObject=new SomeClass(1,2,3);(例如),但当我试图从android界面以友好方式获取我的对象时,我面临着这些问题。我真的认为我必须重新审视我的整个策略。感谢您的时间!
“Apache HttpClient/UNAVAILABLE”不是一个错误,这是我所需要知道的。+1您修复过这个错误吗?有解决方案吗