Google Adwords报告HTTP POST请求会返回400响应代码

时间:2016-07-27 21:49:57

标签: google-adwords

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

下面是返回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)

1 个答案:

答案 0 :(得分:0)

您的报告定义应该转换为application/x-www-form-urlencoded请求的正文,编码为multipart/form-dataParameters - 在您的代码中,您将其添加为名为{{1}}的标头。< / p>