2016-07-27 135 views
0

我正在尝试使用Google Adwords报告HTTP POST请求来检索可能存在于多个广告系列/广告组下的关键字列表的统计信息。这是我所指的https://developers.google.com/adwords/api/docs/guides/reporting#prepare-the-http-post-request的API文档。Google Adwords报告HTTP POST请求返回400响应代码

下面是返回400错误代码的scala代码。我究竟做错了什么 ?或者是否有另一种从KEYWORDS_PERFORMANCE_REPORT报告类型检索数据的方式?

 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) 

回答

0

报告定义应该进入编码无论是作为application/x-www-form-urlencodedmultipart/form-data -in你的代码是将其添加为一个名为Parameters头的POST请求体。