java - 404 访问 https URL 时出错 - Java,但使用 POSTMAN 或 SOAPUI 工作正常

标签 java post token api-key

11 月 21 日编辑:我尝试过使用浏览器直接访问 URL,它给出了相同的 404 错误响应。但是在检查 postman 代码时,我可以看到调用如下。那么有人可以让我知道如何以同样的方式发送电话吗?谢谢

POST/api/test/PW/authentication/user HTTP/1.1

主机:www.hostname.com X-API- key :saksj82kqjsak290d

缓存控制:无缓存

postman token :2b7fl871-195a-4782-9000-6ce269242704

内容类型:multipart/form-data;boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW

内容处置:表单数据;名称=“凭据”

用户123

内容处置:表单数据;名称=“密码”

通过123 ------WebKitFormBoundary7MA4YWxkTrZu0gW--

原始消息: 我在使用 Java 代码从 https Rest APi 获取 token 时遇到问题。 请求网址:https://www.hostname.com/api/test/PW/authentication/user curl : curl -X POST --header '内容类型:application/x-www-form-urlencoded' --header '接受:application/json' --header 'ApiKey:saksj82kqjsak290d -d 'userid=user123&password=pass123 ' ' https://www.hostname.com/api/test/PW/authentication/user ' 方法:POST

一旦我发送帖子请求,我将获得 JSON 格式的 header 值中的 token 。但是在 ping 服务器时,我收到来自 Java 的 404 响应。但是使用 POSTMAN 工具,我得到的响应为 200,并且响应 header 数据中有正确的标记。

注意:我已将此处的 URL 更改为一些虚拟的。

到目前为止,我已尝试如下,但不确定我哪里出了问题。

                    import java.net.*;
                import java.io.*;
                import java.util.*;
                import java.io.BufferedReader;
                import java.io.DataOutputStream;
                import java.io.IOException;
                import java.io.InputStreamReader;
                import java.io.UnsupportedEncodingException;
                import java.net.CookieHandler;
                import java.net.CookieManager;

                import java.net.URL;
                import java.net.URLEncoder;
                import java.util.ArrayList;
                import java.util.List;

                import java.util.Set;
                import java.net.HttpuConnection;

                import javax.net.ssl.HttpsuConnection;
                import java.lang.annotation.Retention;
                import java.net.MalformedURLException;

                public class Tokenhttps {
                    public static void main(String[] args) throws MalformedURLException {

                        int code;

                        String httpsurl = "https://www.hostname.com/api/test/PW/authentication/user";

                        String KeytoPass = "saksj82kqjsak290d";

                        try{
                              URL httpurl = new URL(httpsurl);
                              HttpuConnection uConnect = (HttpuConnection) httpurl.openConnection();

                            //Set header
                              uConnect.setDoOutput(true);
                              uConnect.setRequestMethod("POST");
                              urlConnect.setRequestProperty("Content-type", "application/x-www-form-urlencoded");
                              uConnect.setRequestProperty("Accept", "application/json");
                              uConnect.setRequestProperty("ApiKey", KeytoPass);

                            //Set body
                              String bodydata ="{\"userid\":\"user123\",\"password\":\"pass123\"}";

                            //POST
                            DataOutputStream  dos = new DataOutputStream (uConnect.getOutputStream ());
                            dos.write(bodydata.getBytes());
                            dos.flush();

                            // Read the response.
                            InputStreamReader isr = null;
                            code = uConnect.getResponseCode();
                          System.out.println("responseCode:" + code );
                            if (code == 200) {
                                System.out.println("Connection is Success" );
                               isr = new InputStreamReader(uConnect.getInputStream());
                             //Print Header Fields
                                  System.out.println("HeaderValues :"+uConnect.getHeaderFields ());
                                                } 
                           else {
                               isr = new InputStreamReader(uConnect.getErrorStream());
                            }
                        }

                         catch(Exception errormsg){
                          System.out.println("Error: " +errormsg);
                        }   
                    }
                }

最佳答案

在Java代码中,主体数据是json,但在curl命令中,您传递格式为x-www-form-urlencoded的用户ID和密码。最有可能的是,该服务期望后者,因此当您将其作为前者传递时,它无法获得正确的值。

关于java - 404 访问 https URL 时出错 - Java,但使用 POSTMAN 或 SOAPUI 工作正常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53388930/

相关文章:

security - 在每个请求上刷新 Auth Token 是否可行?

java - WildFly 中的 Apache Ignite 数据源

android - DRF(django-rest-framework)和TokenAuthentication,如何根据Token自动填充json字段?

java - 在 Java 中将 XML 转换为 json,同时保留数据类型

json - 从 post 方法中检索 json 数据并附加到数组

python - http.server : decoding POST request to JSON

python - 使用 Python urllib2 的带有 XML 负载的经过身份验证的 HTTP POST

asp.net - 使用 WIF 安全 token 服务将用户的 asp.net session 限制为 1

java - 如何使用 Hibernate 在 MySQL 数据库中创建特定表

java - 具有多实例管理的单例