2016-03-22 4 views
-1

bearbeitet Codeschlecht Anfrage 400 Fehler bei Amazon api Zugang

foreach($parsed_xml->OperationRequest->Errors->Error as $error){ 
    echo "Error code: " . $error->Code . "\r\n"; 
    echo $error->Message . "\r\n"; echo "\r\n"; 
} 
} 
function printSearchResults($parsed_xml, $SearchIndex){ 
    print("<table>"); 
    if($numOfItems>0){ 
     foreach($parsed_xml->Items->Item as $current){ 
      print("<td><font size='-1'><b>".$current->ItemAttributes->Title."</b>"); 
      if (isset($current->ItemAttributes->Title)) { 
       print("<br>Title: ".$current->ItemAttributes->Title); 
      } elseif(isset($current->ItemAttributes->Author)) { 
       print("<br>Author: ".$current->ItemAttributes->Author); 
      } elseif(isset($current->Offers->Offer->Price->FormattedPrice)){ 
       print("<br>Price:".$current->Offers->Offer->Price->FormattedPrice); 
      }else{ 
       print("<center>No matches found.</center>"); 
      } 
     } 
    } 
} 
if (!isset($params["Timestamp"])) { 
    $params["Timestamp"] = gmdate('Y-m-d\TH:i:s\Z'); 
} 
ksort($params); 
$pairs = array(); 
foreach ($params as $key => $value) { 
    array_push($pairs, rawurlencode($key)."=".rawurlencode($value)); 
} 
$canonical_query_string = join("&", $pairs); 
$string_to_sign = "GET\n".$endpoint."\n".$uri."\n".$canonical_query_string; 
$signature = base64_encode(hash_hmac("sha256", $string_to_sign, $aws_secret_key, true)); 
$request_url =  'http://'.$endpoint.$uri.'?'.$canonical_query_string.'&Signature='.rawurlencode( $signature); 
echo "Signed URL: \"".$request_url."\""; 
} 
function fetchDataUsingAPI($UniqueBatchId) { 
    echo $this->firstpageurl; 
    if(isset($_POST['datafetchresume'])){ 
     $lastbatchdetails = GetTaskLastBatchDetails($_GET['taskid']); 
     $UniqueBatchId = $lastbatchdetails[0]; 
     $this->firstpageurl = $lastbatchdetails[1]; 
    }else { 
     $this->firstpageurl = $this->ItemSearch($categorySplit[1],$UniqueBatchId); 
    } 
    SaveTaskLastBatchDetails($_GET['taskid'], $UniqueBatchId, $this- >firstpageurl); 
    return $UniqueBatchId; 
+0

Dies ist keine Frage.,. bitte formatieren Sie den Code, schränken Sie das Problem ein und fügen Sie echte Sätze hinzu. – DanFromGermany

Antwort

0

Jede Anfrage eine Signatur berechnet werden muss und an die URL hinzugefügt. Schau dir meine PHP-Funktion zum Hinzufügen einer Signatur an.

Verwenden Sie auch CURL statt file_get_contents. Obwohl die API einen 400-Fehler zurückgegeben hat, hat sie auch XML mit zurückgegeben. Dieses XML enthält wahrscheinlich hilfreiche Fehlermeldungen. Wenn Sie CURL verwenden, können Sie die 400 error erkennen und weiterhin den Inhalt der Seite lesen, die zurückgegeben wurde. Mit file_get_contents gibt ein Fehler 400 nur einen Fehler zurück. (Meine Erinnerung an, dass ausgeschaltet sein kann, aber Sie mögen ROTATION besser.)

Check here für weitere Informationen über Amazon API error code

Im PHP-Code gibt es drei Variablen, die von mir nicht definiert. MY_ASSOCIATE_ID, MY_PUBLIC_KEY, MY_PRIVATE_KEY müssen von Ihnen mit entsprechenden Werten definiert werden. Die zwei Schlüssel werden dir von Amazon gegeben. Sie können für eine Weile, erhalten sie hier:

https://portal.aws.amazon.com/gp/aws/securityCredentials

Oder überprüfen Sie die „Mein Konto“ Menü am oberen Rand der Seite und gehen Sie für Ihre Anmeldeinformationen zu jagen. Es wurde berichtet, dass das "neue und verbesserte" System nicht mit dieser API funktioniert, also würde ich Ihre zwei Schlüssel vom obigen Link erhalten, solange Sie noch können. Bewahren Sie sie an einem sicheren Ort auf.

Die Partner-ID kann alles sein - die API überprüft es nicht. Die API verwendet Ihre URL-Parameter, um eine Signatur mit Ihrem öffentlichen Schlüssel, der in der URL enthalten ist, und dem geheimen Schlüssel zu generieren, den sie in der Datei mit dem von Ihnen bereitgestellten öffentlichen Schlüssel haben. Die Signatur, die Sie in der URL angeben, muss genau mit der von Ihnen übereinstimmen, sodass Ihre Schlüssel und Ihre sig-Funktion genau mit denen übereinstimmen müssen.

+0

danke für die Antwort, aber ich bekomme keinen Link für Ihren PHP-Code. – Rashmi

+0

Ich habe hier keinen PHP-Code angegeben. Ich habe eine Lösung, warum Ihr Code nicht funktioniert. –

+0

danke Ich habe Signaturfunktion hinzugefügt, aber mein Aufruf zu fetchDataUsingAPI funktioniert nicht – Rashmi

Verwandte Themen