curl -u 751061:123456 -i -k -X PUT https://server/api/User/751061 -H 'Content-type: application/xml' -d '<User><state>LOGIN</state><extension>751055</extension></User>'
我试着遵循指南,但它根本没有提到任何关于身份验证(也没有XML)的内容。
https://spring.io/guides/gs/consource-rest/#_make_the_application_executable
@PostMapping("/login")
public String login(@RequestParam(name="userId", required=true) String userId,
@RequestParam(name="password", required=true) String password,
@RequestParam(name="extension", required=true) String extension,
HttpSession session,
RestTemplateBuilder builder) {
User user = new User();
user.state = "LOGIN";
user.extension = extension;
// RestTemplate restTemplate = new RestTemplate();
// restTemplate.set
RestTemplate restTemplate = builder.basicAuthorization(userId, password).build();
restTemplate.put("https://server/api/User/"+userId, user);
2018-09-14 22:19:44.038 ERROR 143068 --- [nio-8443-exec-9] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.boot.web.client.RestTemplateBuilder]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: Customizers must not be null] with root cause
java.lang.IllegalArgumentException: Customizers must not be null
at org.springframework.util.Assert.notNull(Assert.java:193) ~[spring-core-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.boot.web.client.RestTemplateBuilder.<init>(RestTemplateBuilder.java:104) ~[spring-boot-2.0.4.RELEASE.jar:2.0.4.RELEASE]
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[na:1.8.0_152]
public String login(@RequestParam(name="userId", required=true) String userId,
@RequestParam(name="password", required=true) String password,
@RequestParam(name="extension", required=true) String extension,
HttpSession session
/*RestTemplateBuilder builder*/) throws KeyManagementException, NoSuchAlgorithmException {
User user = new User();
user.state = "LOGIN";
user.extension = extension;
// turn off SSL checking // https://stackoverflow.com/a/24491820/148844
X509TrustManager[] tm = new X509TrustManager[] {new TrustAllX509TrustManager()}; // from IdS client SDK
SSLContext sc = SSLContext.getInstance("SSL");
sc.init( null, tm, null );
HttpsURLConnection.setDefaultSSLSocketFactory(sc.getSocketFactory());
// set authentication headers
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_XML);
String plainClientCredentials = userId + ":" + password;
String base64ClientCredentials = new String(Base64.encodeBase64(plainClientCredentials.getBytes()));
headers.add("Authorization", "Basic " + base64ClientCredentials);
HttpEntity request = new HttpEntity(null, headers);
// make request
RestTemplate restTemplate = new RestTemplate();
String url = "https://server/api/User/"+userId;
restTemplate.put(url, request, user);
org.springframework.web.client.HttpClientErrorException: 400 Bad Request
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:94) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:79) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.ResponseErrorHandler.handleError(ResponseErrorHandler.java:63) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.RestTemplate.handleResponse(RestTemplate.java:766) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:724) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:680) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
at org.springframework.web.client.RestTemplate.put(RestTemplate.java:495) ~[spring-web-5.0.8.RELEASE.jar:5.0.8.RELEASE]
restTemplate.setErrorHandler(new ResponseErrorHandler() {
@Override
public void handleError(ClientHttpResponse arg0) throws IOException {
byte[] b = new byte[arg0.getBody().available()];
arg0.getBody().read(b);
System.out.println(new String(b));
}
@Override
public boolean hasError(ClientHttpResponse arg0) throws IOException {
return arg0.getRawStatusCode() != 202;
}
});
System.out.println("\n\n\n********************************************************************");
restTemplate.put(url, request, user);
********************************************************************
<ApiErrors>
<ApiError>
<ErrorType>Invalid Input</ErrorType>
<ErrorData>User</ErrorData>
<ErrorMessage> : Premature end of file.</ErrorMessage>
</ApiError>
</ApiErrors>
restTemplate.getInterceptors().add(new BasicAuthorizationInterceptor("username", "password"));
问题内容: 我必须 使用 HTTP Basic身份验证从http服务器下载和解析XML文件。现在,我这样做: 但是以这种方式,我无法从具有http身份验证的服务器获取xml(或者我只是根本不知道该文档)文档。 如果您能向我展示实现我的目标的最好,最简单的方法,我将不胜感激。 问题答案: 您可以使用。例如: 这将设置默认值,并将在 所有 请求中使用。显然,当您不需要所有请求的凭据或多个不同的凭据(可
问题内容: 我有以下CURL请求,谁能请我确认subesquest HTTP请求是什么? 会是这样吗? 任何人都可以帮助我将上述curl请求完全转换为httpreq。 提前致谢。 苏维 问题答案: 有很多方法可以实现这一目标。在我看来,以下一项是最简单的,同意它不是很灵活,但是可以工作。
我正在尝试向正在运行的本地服务器发出GET请求。我无法返回正确的数据,我看到“未经授权”的响应。如果字符串“token”是正确的,那么任何人都能发现任何明显的问题吗。 }* 我能够从命令行获得一个curl请求:
问题内容: 我有一个具有基本身份验证的RESTFull服务,我想从iOS + swift调用它。我必须如何以及在何处为此请求提供凭据? 我的代码(对不起,我刚刚开始学习iOS / obj-c / swift): } 问题答案: 您需要在实例中提供凭据,例如Swift 3: 或在Swift 2中:
我需要对以下URL执行请求: http://[USERNAME]:[PASSWORD]@[SERVER_IP]:[PORT]/some/path/to/some/file 但是最终生成的URL被视为无效,因为它包含两次:字符。有什么解决办法吗? 这就是我所尝试的:
问题内容: 我正在尝试将API查询输入python。命令行 提供一些json输出。myToken是一个十六进制变量,始终保持不变。我想从python进行此调用,以便我可以遍历不同的id并分析输出。有任何想法吗?在需要身份验证之前,我已经使用urllib2进行了此操作。我也查看了请求模块,但无法弄清楚该怎么做。 非常感谢。 问题答案: 该请求包有一个用于HTTP请求的一个非常好的API,加入了自定义