Я пытаюсь вызвать WS из моего кода клиента (на основе Restlet), но я получаю исключение для плохого запроса (код состояния HTTP 400) в методе client.post.Вызов RESTful WS через API-интерфейс restlet
public static void main(String[] args) throws Exception{
String serviceUrl = "http://localhost:8080/MPosBEService"+BeServicePath.MERCHANT_REGISTRATION;
//String serviceUrl = "http://192.168.101.124:8081/be"+BeServicePath.MERCHANT_REGISTRATION;
ClientResource client = new ClientResource(serviceUrl);
addHeaders(client);
objectMapper=new ObjectMapper();
objectMapper.configure(Feature.FAIL_ON_UNKNOWN_PROPERTIES, false);
objectMapper.configure(SerializationConfig.Feature.FAIL_ON_EMPTY_BEANS, false);
try{
Form form = new Form();
form.set("username", "intendanet");
form.set("password", "1111");
client.post(form, MediaType.APPLICATION_JSON);//**this line is the culprit**
//client.post(new MerchantRegisterRequestPojo("intendanet","1111"), MediaType.APPLICATION_JSON);
}catch(Exception e)
{
System.out.println(e.getLocalizedMessage());
throw e;
}
Response response = client.getResponse();
if(response.getStatus().getCode() == 200)
{
m = deserializeJson((HttpEntity)response.getEntity(), MerchantPojo.class);
System.out.println("Result:" + m.id);
}else {
System.out.println("Exception: "+ response.getStatus().getCode());
throw new HttpStatusException(response.getStatus().getCode());
}
}
static private void addHeaders(ClientResource client){
client.getRequestAttributes().put(BeServiceHTTPHeader.REQ_MPOS_BE_SERVICE_LANGUAGE_ID.toString(), "1"+"");
client.getRequestAttributes().put(BeServiceHTTPHeader.REQ_MPOS_BE_SERVICE_DEVICE_APP_VERSION.toString(), "1"+"");
client.getRequestAttributes().put(BeServiceHTTPHeader.REQ_MPOS_BE_SERVICE_DEVICE_GENERATED_ID.toString(), "flskdjf9ksmflskmfl");
client.getRequestAttributes().put(BeServiceHTTPHeader.REQ_MPOS_BE_SERVICE_DEVICE_INFO.toString(), "ovo je moj device!");
}
static private <T> T deserializeJson(HttpEntity json, Class<T> targetType) throws Exception{
return objectMapper.readValue(EntityUtils.toString(json), targetType);
}
Благодаря
Расскажите нам больше о сервере. Какой запрос он ожидает? –
Что такое содержимое 'BeServicePath.MERCHANT_REGISTRATION', может быть, вы пропустите'/'? – Jens
Сервер Tomcat работает либо на 192.168.101.124 (удаленный сервер), либо на localhost. Я пробовал оба URL-адреса, но я получаю одинаковое исключение. Он ожидает получить тип mime приложения/x-www-form-urlencoded. –