2016-07-27 3 views
0

Я пытаюсь использовать Google Adwords для отправки запроса HTTP POST для получения статистики ключевых слов, которые могут существовать в нескольких кампаниях/группах. Это документация API, на которую я ссылался на https://developers.google.com/adwords/api/docs/guides/reporting#prepare-the-http-post-request.Google Adwords Reporting HTTP POST-запрос возвращает 400 код ответа

Ниже приведен код scala, который возвращает 400 код ошибки. Что я делаю не так ? Или существует другой способ получения данных из 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

Ваше определение отчет должно идти в тело POST запроса в закодированном или как application/x-www-form-urlencodedmultipart/form-data или -в вашего кода вы добавляете его в качестве заголовка под названием Parameters.

Смежные вопросы