2016-02-09 128 views
0

有人可以告诉我如何使用RestTemplate来使用Authorization发布HttpEntity对象。如何使用RestTemplate请求POST,使用用户密码授权

public class FifthWay extends Thread { 

    public void run() { 
     String plainCreds = "anuj:khare"; 
     byte[] plainCredsBytes = plainCreds.getBytes(); 
     byte[] base64CredsBytes = Base64.encodeBase64(plainCredsBytes); 

     String base64Creds = new String(base64CredsBytes); 
     HttpHeaders headers = new HttpHeaders(); 
     headers.add("Authorization", "Basic " + base64Creds); 

     HttpEntity<String> postRequest = new HttpEntity<String>("FifthWay",headers); 

     RestTemplate rt = new RestTemplate(); 
     rt.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
     rt.getMessageConverters().add(new StringHttpMessageConverter()); 

     String postUri = new String("http://169.194.48.182:8080/trade-capture-service/deals/persist"); 

     ResponseEntity<String> responseForPost = rt.exchange(postUri,HttpMethod.POST, postRequest, String.class); 
     String responseStringForPost = responseForPost.getBody(); 
     System.out.println(responseStringForPost); 
    } 

} 



服务器端:

我在测试应用




客户端使用下面的代码

@Controller 
@RequestMapping("/deals") 
public class RestController { 
... 
... 
@RequestMapping(value = "/check", method = RequestMethod.GET) 
    public @ResponseBody 
    String justACheck() { 
     System.out.println("It Works"); 
     return "It works"; 
    } 



获得这样的错误:

Exception in thread "Thread-4" org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type 

OR

Exception in thread "Thread-4" org.springframework.web.client.HttpClientErrorException: 400 Bad Request 

请帮

+0

服务器端: @Controller @RequestMapping( “/交易”) 公共类RestController { ... – Kaku

+0

尝试'exchange' RestTemplate的。你可以用POST和GET来完成。 –

+0

我在做只使用交换,但没有帮助 – Kaku

回答

0

这里是RestTemplate交换的例子:

RestTemplate restTemplate = new RestTemplate(); 
restTemplate.getMessageConverters().add(new MappingJackson2HttpMessageConverter()); 
HttpHeaders requestHeaders = new HttpHeaders(); 
final HttpEntity entity = new HttpEntity(restCanvas, requestHeaders); 
return restTemplate.exchange(canvasAddUrl + value, HttpMethod.POST, entity, Integer.class); 

这里canvasAddURL是你想用的上下文路径调用URL。如果你想添加一个cookie,lemme知道,我已经删除了该代码,因为它大部分时间没有必要。这个返回值是ResponseEntity<Integer>。一探究竟。

+0

我在做同样的事情。我觉得服务器端有问题... – Kaku

+0

可能是我使用MediaType.APPLICATION_JSON_VALUE的nediaType。你知道我们应该用什么MediType传递HttpEntity对象吗 – Kaku

+0

你在方法中使用了什么mediatype,通过canvasAddUrl访问 – Kaku

相关问题