404访问https URL-Java时出错,但与邮递员或SOAPUI一起工作正常

404访问https URL-Java时出错,但与邮递员或SOAPUI一起工作正常,java,post,token,api-key,Java,Post,Token,Api Key,11月21日编辑:我曾尝试使用浏览器直接访问URL,它给出了相同的404错误响应。但在登记邮递员代码时,我可以看到电话如下所示。有人能告诉我怎么在同一条路上打电话吗?谢谢 POST/api/test/PW/authentication/user HTTP/1.1 主机:www.hostname.com X-API-Key:saksj82kqjsak290d 缓存控制:没有缓存 邮递员代币:2b7fl871-195a-4782-9000-6ce269242704 内容类型:多部分/表单数据;边界=

11月21日编辑:我曾尝试使用浏览器直接访问URL,它给出了相同的404错误响应。但在登记邮递员代码时,我可以看到电话如下所示。有人能告诉我怎么在同一条路上打电话吗?谢谢

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

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

缓存控制:没有缓存

邮递员代币:2b7fl871-195a-4782-9000-6ce269242704

内容类型:多部分/表单数据;边界=----WebKitFormBoundary7MA4YWxkTrZu0gW

内容配置:表单数据;name=“凭证”

用户123

内容配置:表单数据;name=“密码”

密码123 ------WebKitFormBoundary7MA4YWxkTrZu0gW--

原始消息: 我在使用Java代码从https Rest APi获取令牌时遇到问题。 请求URL: 卷曲: curl-X POST--header'Content Type:application/X-www-form-urlencoded'--header'Accept:application/json'--header'ApiKey:saksj82kqjsak290d-d'userid=user123&password=pass123' 方法:邮寄

一旦我发送Post REQUYEST,我将以JSON格式获取标题值中的令牌。但是在对服务器进行ping操作时,我得到了来自Java的404rsponse。但是使用POSTMAN工具,我得到的响应是200,响应头数据中有适当的令牌

注意:我已将此处的URL更改为一些虚拟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代码中设置
内容类型
属性。您正在访问的服务器可能需要该头来处理您在POST请求中传递的参数

尝试在java代码中设置
内容类型
属性。您正在访问的服务器可能需要该头来处理您在POST请求中传递的参数

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

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

它已处理了以下更改:

String bodaydata= "credential=user123&password=pass123";

它的工作方式有以下变化:

String bodaydata= "credential=user123&password=pass123";

运气不好,我也试过了,但回复代码是一样的:404。我是按旋度传球的,但无法成功。但是soapui和POSTMan工作得很好。也不确定,因为httpS url,它需要一些额外的代码,因为我不确定。运气不好,我也尝试过,但相同的响应代码:404。我是按旋度传球的,但无法成功。但是soapui和POSTMan工作得很好。也不确定,因为httpS url,它需要一些额外的代码,因为我不确定。请输入任何内容?请输入任何内容?我只发送标题中编码的x-www-form-url,刚刚用相同的代码更新。但我用带大括号的JSON格式发送用户id和密码。还是不走运。你能不能说“很可能,服务期望的是后者,所以当你把它作为前者传递进来时,它没有得到正确的值”看起来你已经明白了。当您将内容类型设置为x-www-form-urlencoded时,您是在告诉服务器希望请求数据采用某种格式。在本例中,格式类似于查询字符串的格式化方式。最初,您以不同的格式发送请求数据,该格式被编码为JSON。由于服务器不希望使用该格式,因此无法正确获取您发送的数据。感谢您的解释,但实际上,在按照下面指定的不同格式更正凭据之后,发送到x-www-form-urlencoded的内容类型实际上不是必需的,因为我已经发送了,以接受application/json格式。不过,非常感谢您的投入。我发送的x-www-form-urlencoded仅在标题中,刚刚更新相同。但我用带大括号的JSON格式发送用户id和密码。还是不走运。你能不能说“很可能,服务期望的是后者,所以当你把它作为前者传递进来时,它没有得到正确的值”看起来你已经明白了。当您将内容类型设置为x-www-form-urlencoded时,您是在告诉服务器希望请求数据采用某种格式。在本例中,格式类似于查询字符串的格式化方式。最初,您以不同的格式发送请求数据,该格式被编码为JSON。由于服务器不希望使用该格式,因此无法正确获取您发送的数据。感谢您的解释,但实际上,在按照下面指定的不同格式更正凭据之后,发送到x-www-form-urlencoded的内容类型实际上不是必需的,因为我已经发送了,以接受application/json格式。不过,非常感谢您的投入。