#java #web-services #rest #netbeans #soapui
#java #веб-сервисы #rest #netbeans #soapui
Вопрос:
Я пытаюсь написать Java-клиент для веб-службы REST, определенный таким образом:
@Path("/")
public class Translator {
public Translator() { }
@POST
@Produces("application/json")
@Path("/translate")
public String translate(@QueryParam("dir") String dir, @QueryParam("string")String string, @QueryParam("user")String user, @QueryParam("key")String key){
return doTranslation(dir, string, user, key);
}
}
Я попытался использовать опцию NetBeans «Новый клиент Restful Java», выбрав в качестве исходного кода REST проект, содержащий веб-сервис.
Но он генерирует класс с одним методом, у которого нет параметров:
public class NewJerseyClient {
private WebTarget webTarget;
private Client client;
private static final String BASE_URI = "http://localhost:8086/TranslatorREST/Translator";
public NewJerseyClient() {
client = javax.ws.rs.client.ClientBuilder.newClient();
webTarget = client.target(BASE_URI);
}
public String translate() throws ClientErrorException {
return webTarget.path("translate").request().post(null, String.class);
}
}
Поэтому я не вижу способа передать параметры веб-службе.
Я могу успешно использовать этот веб-сервис из SoapUI, при условии, что я не включаю опцию «Post QueryString», и в этом случае веб-служба получает «null» для всех параметров.
Заранее спасибо.
Ответ №1:
Вы можете добавить параметры с помощью .Параметр запроса() :
public class NewJerseyClient {
private WebTarget webTarget;
private Client client;
private static final String BASE_URI = "http://localhost:8086/TranslatorREST/Translator";
public NewJerseyClient() {
client = javax.ws.rs.client.ClientBuilder.newClient();
webTarget = client.target(BASE_URI);
}
public String translate() throws ClientErrorException {
return webTarget.path("translate").queryParam("dir", "myDir")
.queryParam("string", "myString")
.queryParam("user", "myUser")
.queryParam("key", "myKey").request().post(null, String.class);
}
}