Java 500-内部服务错误-带等式
因此,我正在尝试在我的应用程序中实现eQSL实时api,我不断收到一个错误500,“您正在查找的资源有问题,无法显示”。我正在使用一个函数来帮助我写入表单,可以在上找到。我以前使用过这个库,它可以工作,只是不适用于eqslapi。我一辈子都搞不清楚我做错了什么。这是我的密码:Java 500-内部服务错误-带等式,java,android,httpurlconnection,Java,Android,Httpurlconnection,因此,我正在尝试在我的应用程序中实现eQSL实时api,我不断收到一个错误500,“您正在查找的资源有问题,无法显示”。我正在使用一个函数来帮助我写入表单,可以在上找到。我以前使用过这个库,它可以工作,只是不适用于eqslapi。我一辈子都搞不清楚我做错了什么。这是我的密码: multipart = new MultipartUtility( "http://www.eqsl.cc/qslcard/ImportADIF.cfm", "UTF-8"); multipart.add
multipart = new MultipartUtility(
"http://www.eqsl.cc/qslcard/ImportADIF.cfm", "UTF-8");
multipart.addHeaderField("User-Agent", "Mozilla/5.0 ( compatible )");
multipart.addHeaderField("Accept","identity");
multipart.addFormField("EQSL_USER", mUserName);
multipart.addFormField("EQSL_PSWD", mPassword);
multipart.addFilePartOutputStream("Filename", "HamFinder_"
+ mCallSign + ".adi", new OutputStreamer() {
@Override
public void writeStream(OutputStream outputStream)
throws IOException {
BufferedOutputStream out = null;
try {
out = new BufferedOutputStream(outputStream);
//Writes some output to out, I've done this way before, no problem.
} finally {
out.close();
}
}
});
List<String> response = multipart.finish();
一些HTML代码是:
05-10 23:28:01.108: I/System.out(2456): <h2>500 - Internal server error.</h2>
05-10 23:28:01.108: I/System.out(2456): <h3>There is a problem with the resource you are looking for, and it cannot be displayed.</h3>
05-10 23:28:01.108:I/System.out(2456):500-内部服务器错误。
05-10 23:28:01.108:I/System.out(2456):您正在查找的资源有问题,无法显示。
知道我做错了什么吗?检查服务器端日志。如果你不能,那么向网站维护人员报告 500错误意味着服务器(在某种意义上)已损坏
话虽如此,“接受身份”的东西是可疑的
multipart.addHeaderField("Accept","identity");
客户端应该使用HTTP Accept头来告诉服务器它可以处理什么样的响应。标题值应为格式良好的媒体类型;e、 g.“文本/html”或“图像/png”或“应用程序/八位字节流”。通过提供垃圾值,您可能在服务器处理Accept标头时遇到了一个错误
参考:
更新 在评论中,您引用了一个bug报告,您声称该报告支持使用“Accept”来停止服务器发送压缩响应体。事实上,bug报告建议您使用“接受编码”。该标题与您正在使用的标题不同
因此,即使500错误的实际原因不同,您使用的“接受”是不正确的,不太可能达到您试图达到的目的。(很可能服务器不会默认发送压缩响应。)我的问题似乎是有两个代理字段,
multipart.addHeaderField(“用户代理”,“Mozilla/5.0(兼容)”)代码>和默认情况下在MultiPart()
中添加的一个。删除一个修复了错误。默认情况下,我使用“接受标识”来尝试绕过Android的GZIP压缩,但没有它,我会遇到同样的错误。不幸的是,我无法访问服务器日志。我很确定“接受身份”是假的。它说应该在哪里工作?请参阅我的更新。这是“接受编码”,而不是“接受”。对于投票表示信息不足的人,我很想知道还应该包括哪些内容。我已经发布了大部分代码、堆栈跟踪、api文档以及HTML错误日志的关键部分,我不确定还能包括哪些内容。。。
multipart.addHeaderField("Accept","identity");