2016-03-27 19 views
0

Benzer yazıların farkındayım ve onları kontrol ettim, ancak bunlar bana yardımcı olamaz.RestTemplate POST - tanıtıcı yanıtı

Üç parametre ve temel bir kimlik doğrulama gerektiren bir API'ye (örnek görevleri yöneten) POST yapmak istiyorum. Postacıda çalışır. Gövde gibi

{ 
    "title": "foo", 
    "description": "bar", 
    "completed": "false" 
} 

ve temel kimlik bilgilerini (kullanıcı adı ve parola ile) belirtin. i api'sine bir POST gönderirseniz

{ 
    "id": 0001 
} 

Her şey çalışıyor, ama şimdi java bunu uygulamak istiyoruz: API yanıtı şöyle gönderir. POST: HttpClientErrorException: 400 Hatalı İstek (DefaultResponseErrorHandler) göndermeye çalışırsam 400 hatalı istek alıyorum. Görev ve TaskResponse, pojo'nun istek ve yanıtta olduğu gibi, argüman/no-arg kurucu, getter ve setter gibi alanlarla ilgilidir.

Task task = new Task("foo", "bar", false); 
     RestTemplate template = new RestTemplate(); 
     HttpEntity<Task> httpEntity = new HttpEntity<>(task, createHttpHeader()); 
     ResponseEntity<TaskResponse> result = template.exchange(uri, HttpMethod.POST, httpEntity, TaskResponse.class); 

private HttpHeaders createHttpHeader() { 
     HttpHeaders requestHeaders = new HttpHeaders(); 
     requestHeaders.setContentType(MediaType.APPLICATION_JSON); 
     requestHeaders.setAccept(Collections.singletonList(MediaType.APPLICATION_JSON)); 
     requestHeaders.set("Authorization", createBasicAuthHeaderValue(username, password)); 
     return requestHeaders; 
    } 

    private String createBasicAuthHeaderValue(String username, String password) { 
     String credentials = username + ":" + password; 
     byte[] base64Credentials = Base64.encodeBase64(credentials.getBytes()); 
     return "Basic " + Arrays.toString(base64Credentials); 
    } 
+0

Farklı şeyler denedim, ama hiçbir şey benim için çalışmıyor. Benim açımdan, sorun, cevaba nasıl tepki verileceğidir, çünkü örneğin yanıt olarak geri gelen talep değildir. Tamamen farklı bir şey. Bu örnekte oluşturulan görevin kimliği. String.class'ı yanıt türü olarak kullanmayı denedim, ancak çalışmıyor. – pas2al

+0

Jackson'ı sınıf yoluna dahil ettiniz ve izleme modunu etkinleştirebilir ve istek gövdesinin doğru Json temsiline sahip olup olmadığını doğrulayabilirsiniz. – Bhokal

+0

@Bhokal Jackson nedir? Merak ediyorum ... çünkü cevap sadece bir JSON. String.class benim için çalışmamalı mı? – pas2al

cevap

0

Bu uygulamanın iyi olduğunu keşfettim. Dize, bir Yanıt türü olarak kabul eder. Başka bir sorun vardı, ancak bu bağlamla ilgili değildi.