【问题标题】:How to add parameters to restful request?如何为restful请求添加参数?
【发布时间】:2013-03-22 04:25:00
【问题描述】:

我正在使用以下代码发送 REST 请求,请求失败(401 错误),因为它需要用户名和密码。

如何将它们添加到 url 中?即使我在浏览器中复制 url 并将用户名和密码添加到它的末尾,浏览器也会弹出登录页面,所以我想在代码中我应该添加用户名和密码参数但是如何?

  URL url = new URL("www.example.com/user?ID=1234");
        HttpURLConnection conn = (HttpURLConnection) url.openConnection();
        conn.setDoOutput(true);
        conn.setRequestMethod("POST");
        conn.setRequestProperty("Content-Type", "application/json");
                if (conn.getResponseCode() != HttpURLConnection.HTTP_CREATED) {
            throw new RuntimeException("Failed : HTTP error code : "
                + conn.getResponseCode());
        }

我在代码中添加了以下内容,但仍然遇到 401 错误。

             conn.setRequestProperty("username", "myusername");
             conn.setRequestProperty("password", "mypassword");

【问题讨论】:

标签: java rest jakarta-ee restful-url


【解决方案1】:

试试这个:

String params="username=myusername&password=mypassword";
conn.getOutputStream().write(params.getBytes());
conn.getOutputStream().flush();
conn.getOutputStream().close();

或者您可能需要对参数进行编码:

DataOutputStream dos = new DataOutputStream(conn.getOutputStream());

String postContent = URLEncoder.encode("username", "UTF-8") + "=" + 
                     URLEncoder.encode(myusername, "UTF-8") + "&" + 
                     URLEncoder.encode("password", "UTF-8") + "=" + 
                     URLEncoder.encode(mypassword, "UTF-8") ;

dos.write(postContent.getBytes());
dos.flush();
dos.close();

关于Basic Authorization

String userPassword = username + ":" + password;
String encoding = new sun.misc.BASE64Encoder().encode(userPassword.getBytes());
URLConnection uc = url.openConnection();
uc.setRequestProperty("Authorization", "Basic " + encoding);
uc.connect();

【讨论】:

  • 谢谢,但它仍然遇到错误 401,我也仔细检查了用户名和密码。
  • @DanielMorgan http 401 错误代码表示该请求未能提供正确的身份验证并被拒绝访问站点。
  • @DanielMorgan 也许你可以在浏览器中测试 url?
  • 当我在浏览器中复制相同的url时,它会弹出一个登录窗口,然后我可以输入与代码相同的用户名和密码来检索结果。
  • 如何打印请求?
猜你喜欢
  • 1970-01-01
  • 2015-07-21
  • 1970-01-01
  • 1970-01-01
  • 2020-07-11
  • 1970-01-01
  • 1970-01-01
  • 2014-02-02
  • 1970-01-01
相关资源
最近更新 更多