के साथ अनुरोध किया है कि पूरे इंटरनेट को कई बार टंकण और पढ़ने के बाद कई बार मैं उत्पाद विज्ञापन API के उपयोग के लिए अनुरोधों पर हस्ताक्षर कैसे कर सकता हूं।अमेज़ॅन उत्पाद विज्ञापन एपीआई ने जावा
अब तक मैं प्रदान की गई WSDL फ़ाइल से क्लाइंट उत्पन्न करने में कामयाब रहा। मैंने इसके लिए अमेज़ॅन द्वारा एक ट्यूटोरियल का इस्तेमाल किया। अब तक कोई समस्या नहीं
Tutorial for generating the web service client
: आप इसे यहाँ पा सकते हैं। क्लाइंट का परीक्षण करने के लिए मैंने कोड का एक छोटा टुकड़ा लिखा था। कोड का उद्देश्य किसी उत्पाद के बारे में कुछ जानकारी प्राप्त करना है। उत्पाद अपने एएसआईएन द्वारा निर्दिष्ट किया गया है।
कोड:
package client;
import com.ECS.client.jax.AWSECommerceService;
import com.ECS.client.jax.AWSECommerceServicePortType;
import com.ECS.client.jax.ItemLookup;
import com.ECS.client.jax.ItemLookupResponse;
import com.ECS.client.jax.ItemLookupRequest;
public class Client {
public static void main(String[] args) {
System.out.println("API Test startet");
AWSECommerceService service = new AWSECommerceService();
AWSECommerceServicePortType port = service.getAWSECommerceServicePort();
ItemLookupRequest itemLookup = new ItemLookupRequest();
itemLookup.setIdType("ASIN");
itemLookup.getItemId().add("B000RE216U");
ItemLookup lookup = new ItemLookup();
lookup.setAWSAccessKeyId("<mykeyishere>");
lookup.getRequest().add(itemLookup);
ItemLookupResponse response = port.itemLookup(lookup);
String r = response.toString();
System.out.println("response: " + r);
System.out.println("API Test stopped");
}
}
आप देख सकते हैं कि वहाँ कोई हिस्सा है जहाँ मैं अनुरोध पर हस्ताक्षर है। मैंने उपयोग की जाने वाली कई कक्षाओं के माध्यम से अपना रास्ता काम किया है और अनुरोध पर हस्ताक्षर करने के लिए कोई तरीका नहीं मिला है।
तो, अनुरोध पर हस्ताक्षर कैसे करें?
मैं वास्तव में दस्तावेज में कुछ पाया: request authentication
लेकिन वे अपने स्वयं के एपीआई का उपयोग नहीं करते। प्रस्तावित समाधान मैन्युअल उपयोग के लिए केवल कम या कम हैं। इसलिए मैंने क्लाइंट क्लास में यह पता लगाने के लिए देखा कि क्या मैं अनुरोध यूआरएल प्राप्त कर सकता हूं और खुद को साइन इन करने के अनुरोध के लिए आवश्यक सभी हिस्सों को रख सकता हूं। लेकिन ऐसी कोई विधि नहीं है।
मुझे उम्मीद है कि कोई यह बता सकता है कि मैं क्या गलत कर रहा हूं।
यही समस्या मैंने हल करने के लिए किया था। सभी क्रेडिट Jon और अमेज़ॅन मंचों के लोग जाते हैं।
इससे पहले कि मैंने जो कुछ किया है, उसकी रूपरेखा से पहले, यहां पोस्ट का एक लिंक है जिसने मुझे समस्या को हल करने में मदद की: Forum Post on Amazon forums।
मैंने पोस्ट में जुड़ा हुआ awshandlerresolver.java डाउनलोड किया है। मैंने अपना कोड संशोधित किया है, इसलिए ऐसा लगता है:
package client;
import com.ECS.client.jax.AWSECommerceService;
import com.ECS.client.jax.AWSECommerceServicePortType;
import com.ECS.client.jax.ItemLookup;
import com.ECS.client.jax.ItemLookupResponse;
import com.ECS.client.jax.ItemLookupRequest;
public class Client {
public static void main(String[] args) {
System.out.println("API Test startet");
AWSECommerceService service = new AWSECommerceService();
service.setHandlerResolver(new AwsHandlerResolver("<Secret Key>")); // important
AWSECommerceServicePortType port = service.getAWSECommerceServicePort();
ItemLookupRequest itemLookup = new ItemLookupRequest();
itemLookup.setIdType("ASIN");
itemLookup.getItemId().add("B000RE216U");
ItemLookup lookup = new ItemLookup();
lookup.setAWSAccessKeyId("<Access Key>"); // important
lookup.getRequest().add(itemLookup);
ItemLookupResponse response = port.itemLookup(lookup);
String r = response.toString();
System.out.println("response: " + r);
System.out.println("API Test stopped");
}
}
अंत में प्रिंटलन कम या ज्यादा बेकार है। लेकिन यह काम करता है। मैंने डब्ल्यूएसडीएल जॉन का भी एक नया webservice क्लाइंट उत्पन्न करने के लिए लिंक किया। मैंने अपने प्रश्न में पोस्ट किए गए ट्यूटोरियल में यूआरएल को बदल दिया है।
इस सारांश को पोस्ट करने के लिए धन्यवाद, बस मुझे एक दिन के प्रयास के बारे में बचाया! –
एक और बात: [क्लाइंट-साइड एपीआई पीढ़ी नोट्स] (http://docs.amazonwebservices.com/AWSECommerceService/latest/GSG/YourDevelopmentEnvironment.html) यह स्पष्ट नहीं करते कि डेवलपर ** ** इनपुट करना चाहिए waximport करने के लिए jaxws-custom.xml फ़ाइल, या जेन्स 'जैसे उदाहरण जेनरेट किए गए कोड से संकलित नहीं होंगे। –