Hallo Leute,
ich habe den code aus dem Buch vom A. Hillegass. Und bekomme als Fehlermeldung das mir einer der Parameter fehlt(AWSAccessKeyId, SubscriptionId.). Ich hab mir aber eine AWS ID zugelegt. Ich benutzte nicht die aus dem Buch. Und trotzdem bekomm ich ein fehler und weiß einfach nicht wo ich suchen soll.
hier ist der code:
Alles anzeigen
Und hier die meldung aus dem Debugger:
Alles anzeigen
Ich hoffe ihr könnt einem anfänger helfen
Gruß
Nikkita
ich habe den code aus dem Buch vom A. Hillegass. Und bekomme als Fehlermeldung das mir einer der Parameter fehlt(AWSAccessKeyId, SubscriptionId.). Ich hab mir aber eine AWS ID zugelegt. Ich benutzte nicht die aus dem Buch. Und trotzdem bekomm ich ein fehler und weiß einfach nicht wo ich suchen soll.
hier ist der code:
Quellcode
- #import "AppController.h"
- #define AWS_ID @"XXXXXXXXXXXXXXXXXXX"
- @implementation AppController
- - (IBAction)fetchBooks:(id)sender
- {
- // Show the user that something is going on
- [progress startAnimation:nil];
- // Put together the request
- // See http://www.amazon.com/gp/aws/landing.html
- // Get the string and percent-escape for insertion into URL
- NSString *input = [searchField stringValue];
- NSString *searchString = [input stringByAddingPercentEscapesUsingEncoding: NSUTF8StringEncoding];
- NSLog(@"searchString = %@", searchString);
- // Create the URL (Long string broken into several lines is OK)
- NSString *urlString = [NSString stringWithFormat:
- @"http://ecs.amazonaws.com/onca/xml?"
- @"Keywords=%@&"
- @"AWSAccessKeyID=%@&"
- @"Service=AWSECommerceService&"
- @"Operation=ItemSearch&"
- @"SearchIndex=Books&"
- @"Version=2008-30-10",
- searchString, AWS_ID];
- NSURL *url = [NSURL URLWithString:urlString];
- NSURLRequest *urlRequest = [NSURLRequest requestWithURL:url cachePolicy:NSURLRequestReturnCacheDataElseLoad timeoutInterval:30];
- // Fetch the XML response
- NSData *urlData;
- NSURLResponse *response;
- NSError *error;
- urlData = [NSURLConnection sendSynchronousRequest:urlRequest returningResponse:&response error:&error];
- if (!urlData) {
- NSAlert *alert = [NSAlert alertWithError:error];
- [alert runModal];
- return;
- }
- // Parse the XML response
- [doc release];
- doc = [[NSXMLDocument alloc] initWithData:urlData options:0 error:&error];
- NSLog(@"doc = %@", doc);
- if (!doc) {
- NSAlert *alert = [NSAlert alertWithError:error];
- [alert runModal];
- return;
- }
- [itemNodes release];
- itemNodes = [[doc nodesForXPath:@"ItemSearchResponse/Items/Item" error:&error] retain];
- if (!itemNodes) {
- NSAlert *alert = [NSAlert alertWithError:error];
- [alert runModal];
- return;
- }
- // Update the interface
- [tableView reloadData];
- [progress stopAnimation:nil];
- }
- /*-(int)numberOfRowsInTableView:(NSTableView*)tv
- {
- return 0;
- } */
- - (NSString *)stringForPath:(NSString *)xp ofNode:(NSXMLNode *)n
- {
- NSError *error;
- NSArray *nodes = [n nodesForXPath:xp error:&error];
- if (!nodes) {
- NSAlert *alert = [NSAlert alertWithError:error];
- [alert runModal];
- return nil;
- }
- if ([nodes count] == 0) {
- return nil;
- } else {
- return [[nodes objectAtIndex:0] stringValue];
- }
- }
- #pragma mark TableView data source methods
- - (int)numberOfRowsInTableView:(NSTableView *)tv
- {
- return [itemNodes count];
- }
- - (id)tableView:(NSTableView *)tv
- objectValueForTableColumn:(NSTableColumn *)tableColumn
- row:(int)row
- {
- NSXMLNode *node = [itemNodes objectAtIndex:row];
- NSString *xPath = [tableColumn identifier];
- return [self stringForPath:xPath ofNode:node];
- }
- @end
Und hier die meldung aus dem Debugger:
Quellcode
- 2008-10-30 20:31:20.402 Amazon[460:10b] searchString = hillegass
- 2008-10-30 20:31:22.862 Amazon[460:10b] doc = <?xml version="1.0" encoding="UTF-8"?><ItemSearchResponse xmlns="http://webservices.amazon.com/AWSECommerceService/2008-10-06">
- <OperationRequest>
- <HTTPHeaders><Header Name="UserAgent" Value="Amazon/1.0 CFNetwork/339.5 Darwin/9.5.0 (i386) (MacBook4,1)"></Header></HTTPHeaders>
- <RequestId>1G40KJJ83W2KC7CRYDAE</RequestId>
- <Arguments>
- <Argument Name="SearchIndex" Value="Books"></Argument>
- <Argument Name="Service" Value="AWSECommerceService"></Argument>
- <Argument Name="Keywords" Value="hillegass"></Argument>
- <Argument Name="Operation" Value="ItemSearch"></Argument>
- <Argument Name="AWSAccessKeyID" Value="XXXXXXXXXXXXXXXXX"></Argument>
- <Argument Name="Version" Value="2008-30-10"></Argument></Arguments>
- <Errors><Error><Code>AWS.MinimumParameterRequirement</Code>
- <Message>Your request should have atleast 1 of the following parameters: AWSAccessKeyId, SubscriptionId.
- </Message></Error></Errors></OperationRequest></ItemSearchResponse>
Ich hoffe ihr könnt einem anfänger helfen

Gruß
Nikkita