所以我正在尝试在我的应用程序中为eQSL Real Time api实现this interface,并且我一直收到错误500,其中包含“您正在寻找的资源存在问题,而且它不能显示“。我正在使用一个函数来帮助我写表格,可以在Git Hub找到。我之前使用过该库,它可以工作,而不是eQSL api。我不能为我的生活弄清楚我做错了什么。这是我的代码:
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();
我一直收到以下错误:
05-10 23:28:01.108: W/System.err(2456): java.io.IOException: Server returned non-OK status: 500, message Internal Server Error
05-10 23:28:01.120: W/System.err(2456): at com.kd7uiy.trustedQsl.MultipartUtility.finish(MultipartUtility.java:182)
05-10 23:28:01.120: W/System.err(2456): at com.kd7uiy.hamfinder.EqslUploader.writeToEqsl(EqslUploader.java:129)
05-10 23:28:01.120: W/System.err(2456): at com.kd7uiy.hamfinder.EqslUploader.uploadQso(EqslUploader.java:72)
05-10 23:28:01.124: W/System.err(2456): at com.kd7uiy.hamfinder.ElectronicQslManager$CommitToService.doInBackground(ElectronicQslManager.java:38)
05-10 23:28:01.124: W/System.err(2456): at com.kd7uiy.hamfinder.ElectronicQslManager$CommitToService.doInBackground(ElectronicQslManager.java:1)
05-10 23:28:01.124: W/System.err(2456): at android.os.AsyncTask$2.call(AsyncTask.java:287)
05-10 23:28:01.124: W/System.err(2456): at java.util.concurrent.FutureTask.run(FutureTask.java:234)
05-10 23:28:01.124: W/System.err(2456): at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
05-10 23:28:01.124: W/System.err(2456): at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
05-10 23:28:01.124: W/System.err(2456): at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
05-10 23:28:01.124: W/System.err(2456): at java.lang.Thread.run(Thread.java:841)
一些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>
知道我做错了吗?
答案 0 :(得分:1)
看起来我的问题是有两个代理字段multipart.addHeaderField("User-Agent", "Mozilla/5.0 ( compatible )");
,默认情况下在MultiPart()
中添加了一个。删除一个修复错误。
答案 1 :(得分:0)
检查服务器端日志。如果您不能,请将此情况报告给维护该网站的人员。
500错误意味着服务器(在某种意义上)已损坏。
话虽如此,“接受身份”的东西是可疑的。
multipart.addHeaderField("Accept","identity");
客户端应该使用HTTP Accept标头来告诉服务器它可以处理哪种响应。标头值应该是格式良好的媒体类型;例如“text / html”或“image / png”或“application / octet-stream”。通过提供垃圾值,您可能会在服务器处理Accept标头时发现错误。
参考:HTTP 1.1 Specification: Section 14.1
<强>更新强>
在评论中,您引用了一个错误报告,您声称支持使用“接受”来停止服务器发送压缩响应正文。实际上,错误报告建议您使用“Accept-encoding”。这是你正在使用的标题的不同标题。
因此,即使500错误的实际原因不同,您对“接受”的使用也是不正确的,并且不太可能达到您试图实现的目的。 (可能无论如何服务器都不会默认发送压缩响应。)