2016-07-27 19 views
0

Ich versuche, Google Adwords Reporting HTTP-POST-Anfrage zu verwenden, um Statistiken für eine Liste von Schlüsselwörtern zu erhalten, die unter mehreren Kampagnen/Anzeigengruppen existieren könnten. Dies ist die API-Dokumentation, auf die ich mich bezogen habe https://developers.google.com/adwords/api/docs/guides/reporting#prepare-the-http-post-request.Google Adwords Reporting HTTP POST-Anfrage gibt 400 Antwortcode zurück

Unten ist Scala-Code, der 400 Fehlercode zurückgibt. Was mache ich falsch ? Oder gibt es eine andere Möglichkeit zum Abrufen von Daten von KEYWORDS_PERFORMANCE_REPORT Berichtstyp?

 val httpClient = new DefaultHttpClient() 
     val postRequest=new HttpPost("https://adwords.google.com/api/adwords/reportdownload/v201605") 
     postRequest.addHeader("Host","adwords.google.com") 
     postRequest.addHeader("User-Agent", "curl, gzip") 
     postRequest.addHeader("Accept","*/*") 
     postRequest.addHeader("Expect","100-continue") 
     postRequest.addHeader("Accept-Encoding","gzip") 
     postRequest.addHeader("Content-Type","multipart/form-data; boundary=------------------------12d01fae60c7b559; charset=utf-8") 
     postRequest.addHeader("Authorization","Bearer 1/*************************************") 
     postRequest.addHeader("developerToken","/*************************************")") 
     postRequest.addHeader("clientCustomerId","/*************************************")") 
     postRequest.addHeader("Parameters","__rdxml: <?xml version=\"1.0\" " + 
     "encoding=\"UTF-8\"?>" + 
     "<reportDefinition>" + 
     " <selector>" + 
     " <fields>CampaignId</fields>" + 
     " <fields>AdGroupId</fields>" + 
     " <fields>Id</fields>" + 
     " <fields>Criteria</fields>" + 
     " <fields>CriteriaType</fields>" + 
     " <fields>Impressions</fields>" + 
     " <fields>Clicks</fields>" + 
     " <fields>Cost</fields>" + 
     " <predicates>" + 
     "  <field>Status</field>" + 
     "  <operator>NOT_IN</operator>" + 
     "  <values>PAUSED</values>" + 
     " </predicates>" + 
     " </selector>" + 
     " <reportName>Criteria performance report #56bd904878715</reportName>" + 
     " <reportType>CRITERIA_PERFORMANCE_REPORT</reportType>" + 
     " <dateRangeType>LAST_7_DAYS</dateRangeType>" + 
     " <downloadFormat>CSV</downloadFormat>" + 
     "</reportDefinition>") 
     val httpResponse=httpClient.execute(postRequest) 
     println(httpResponse.getStatusLine.toString) 

Antwort

0

Report Definition sollte entweder als application/x-www-form-urlencoded oder multipart/form-data -in Code codiert gehen in den Körper des POST Anfrage Sie es als Header hinzufügen Parameters genannt.