Всем привет! Пытаюсь опробовать пример из книги Java Web Services: Up and Running - клиент для веб сервиса Amazon вот код: | Код | import awsClient.AWSECommerceService; import awsClient.AWSECommerceServicePortType; import awsClient.ItemSearchRequest; import awsClient.ItemSearch; import awsClient.Items; import awsClient.Item; import awsClient.OperationRequest; import awsClient.SearchResultsMap; import javax.xml.ws.Holder; import java.util.List; import java.util.ArrayList; class AmazonClientW { // W is for Wrapped style public static void main(String[ ] args) { if (args.length < 1) { System.err.println("Usage: java AmazonClientW <access key>"); return; } final String access_key = args[0]; // Construct a service object to get the port object. AWSECommerceService service = new AWSECommerceService(); AWSECommerceServicePortType port = service.getAWSECommerceServicePort(); // Construct an empty request object and then add details. ItemSearchRequest request = new ItemSearchRequest(); request.setSearchIndex("Books"); request.setKeywords("quantum gravity"); ItemSearch search = new ItemSearch(); search.getRequest().add(request); search.setAWSAccessKeyId(access_key); Holder<OperationRequest> operation_request = null; Holder<List<Items>> items = new Holder<List<Items>>(); port.itemSearch(search.getMarketplaceDomain(), search.getAWSAccessKeyId(), search.getSubscriptionId(), search.getAssociateTag(), search.getXMLEscaping(), search.getValidate(), search.getShared(), search.getRequest(), operation_request, items); // Unpack the response to print the book titles. Items retval = items.value.get(0); // first and only Items element List<Item> item_list = retval.getItem(); // list of Item subelements for (Item item : item_list) // each Item in the list System.out.println(item.getItemAttributes().getTitle()); } }
|
и при вызове метода port.itemSearch() вываливается ошибка | Код | Exception in thread "main" com.sun.xml.internal.ws.client.ClientTransportException: The server sent HTTP status code 403: Forbidden at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.checkStatusCode(HttpTransportPipe.java:196) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.process(HttpTransportPipe.java:168) at com.sun.xml.internal.ws.transport.http.client.HttpTransportPipe.processRequest(HttpTransportPipe.java:83) at com.sun.xml.internal.ws.transport.DeferredTransportPipe.processRequest(DeferredTransportPipe.java:105) at com.sun.xml.internal.ws.api.pipe.Fiber.__doRun(Fiber.java:587) at com.sun.xml.internal.ws.api.pipe.Fiber._doRun(Fiber.java:546) at com.sun.xml.internal.ws.api.pipe.Fiber.doRun(Fiber.java:531) at com.sun.xml.internal.ws.api.pipe.Fiber.runSync(Fiber.java:428) at com.sun.xml.internal.ws.client.Stub.process(Stub.java:211) at com.sun.xml.internal.ws.client.sei.SEIStub.doProcess(SEIStub.java:124) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:98) at com.sun.xml.internal.ws.client.sei.SyncMethodHandler.invoke(SyncMethodHandler.java:78) at com.sun.xml.internal.ws.client.sei.SEIStub.invoke(SEIStub.java:107) at $Proxy29.itemSearch(Unknown Source) at ch02.amazon.AmazonClientW.main(AmazonClientW.java:63) Java Result: 1
|
access key использутся корректный, хотя если его не указывать, ошибка та же. в чем может быть проблема? И почему именно 403 HTTP-код?
|