500-内部服务错误 - 使用eQSL

时间:2014-05-10 23:41:51

标签: java android httpurlconnection

所以我正在尝试在我的应用程序中为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>

知道我做错了吗?

2 个答案:

答案 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错误的实际原因不同,您对“接受”的使用也是不正确的,并且不太可能达到您试图实现的目的。 (可能无论如何服务器都不会默认发送压缩响应。)