使用POSTMAN时,我可以得到响应,但不能通过代码获得。
这是我通过POSTMAN做的事情
RequestMethod.POST
In HEADERS
Content-Type : application/x-www-form-urlencoded
Accept : */*
In BODY
c_id : myname
c_secret : mypassword
g_type : myvalue
c_scope : value2
这是我发送请求并得到以下响应的方式
{
"access_token": "token_value",
"token_type": "bearer",
"expires_in": 6000,
"scope": "scope_vale",
"jti": "jti_value"
}
在POSTMAN中,我还禁用了SSL验证。
这就是我在SPRING BOOT应用程序中进行编码的方式
@RestController
@RequestMapping(value="/rest/site")
public class CSController {
final String url="url name";
@RequestMapping(path = "/token", method = RequestMethod.POST)
public ResponseEntity<?> getToken() throws JsonProcessingException
{
RestTemplate rt = new RestTemplate();
HttpHeaders headers = new HttpHeaders();
headers.setAccept(Arrays.asList( MediaType.ALL) );
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
Map<String, String> bodyParamMap = new HashMap<String, String>();
bodyParamMap.put("c_id", "myname");
bodyParamMap.put("c_secret", "mypassword");
bodyParamMap.put("g_type", "myvalue");
bodyParamMap.put("c_scope", "value2");
String reqBodyData = new ObjectMapper().writeValueAsString(bodyParamMap);
HttpEntity<String> requestEntity = new HttpEntity<>(reqBodyData, headers);
System.out.println( " get token from url 2");
ResponseEntity<String> result = rt.exchange(url,HttpMethod.POST, requestEntity, String.class);
return ResponseEntity.ok(result);
}
}
但是我遇到了以下错误
Whitelabel Error Page
This application has no explicit mapping for /error, so you are seeing this as a fallback.
Tue Jun 18 10:49:58 IST 2019
There was an unexpected error (type=Method Not Allowed, status=405).
Request method 'GET' not supported
我该如何解决?
答案 0 :(得分:0)
您的控制器方法支持1.text
2.text
Some text here
a.Txt
b.Txt
而不是POST
的请求,因此向浏览器发送请求时将导致GET
method Not allowed
如何解决
从您的方法中删除显式POST,它将同时适用于GET和POST请求
@RequestMapping(path = "/token", method = RequestMethod.POST) // POST
public ResponseEntity<?> getToken() throws JsonProcessingException
{
RestTemplate rt = new RestTemplate();