【问题标题】:Post File to URL using java with authentication使用带有身份验证的 java 将文件发布到 URL
【发布时间】:2013-01-08 22:01:05
【问题描述】:

我尝试了下面的代码:

public class URLUploader {

    public static void main(String[] args) throws IOException 
    {

        URL url = new URL("http://77.203.65.164:6011");
        URLConnection conn = url.openConnection();
        conn.setDoOutput(true);

        String name = "user";
                String password = "password";

                String authString = name + ":" + password;
                System.out.println("auth string: " + authString);
                byte[] authEncBytes = Base64.encodeBase64(authString.getBytes());
                String authStringEnc = new String(authEncBytes);
                System.out.println("Base64 encoded auth string: " + authStringEnc);

        conn.setRequestProperty("Authorization", "Basic " + authStringEnc);
        OutputStreamWriter writer = new OutputStreamWriter(conn.getOutputStream());

        writer.write("/var/www/html/kannel/javacode/13569595024298.xml");
        writer.flush();
        String line;
        BufferedReader reader = new BufferedReader(new    InputStreamReader(conn.getInputStream()));
        while ((line = reader.readLine()) != null) {
          System.out.println(line);
        }

        writer.close();
        reader.close();
    }
}

但我收到以下错误:

auth string: optiweb:optiweb
Base64 encoded auth string: b3B0aXdlYjpvcHRpd2Vi
    Exception in thread "main" java.io.IOException: Server returned HTTP response code: 500 for URL: 77.203.65.164:6011
    at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1403)
    at URLUploader.main(URLUploader.java:32)

可能出了什么问题?

【问题讨论】:

  • 您确定遇到了身份验证错误吗?看起来您只是将文件直接写入远程服务器,但您可能希望将其作为表单编码数据发布。对于初学者,我建议你使用 jakarta http client library 来处理这个问题。

标签: java file upload io


【解决方案1】:

首先,HTTP Response Code 500 是“Internal Server Error”,与身份验证无关。

二、声明

writer.write("/var/www/html/kannel/javacode/13569595024298.xml");

只是将文件的完整路径名写入服务器,而不是实际的文件内容,甚至没有尾随的换行符。这肯定不是服务器所期望的,并且可能是 500 响应的原因。您正在构建和发送的请求也可能存在其他问题,但如果没有详细的 API 参考来了解连接另一端的任何内容,将很难提供进一步的帮助。

【讨论】:

  • 我试图将文件写入字节数组,但这也不起作用,该数据类型是 write.write() 期望的?
猜你喜欢
  • 1970-01-01
  • 2016-05-13
  • 2020-07-10
  • 2017-10-29
  • 2023-04-11
  • 2013-03-19
  • 1970-01-01
  • 2018-11-21
  • 1970-01-01
相关资源
最近更新 更多