2014-01-21 4 views
0

Я работаю с Bing API и когда я делаю SOAP-запрос для получения статистики своей кампании. У меня возникли проблемы с передачей параметров URL для даты (предоставленной bootstrap datepicker) запрос.Невозможно передать URL-параметры в запрос api

Я постоянно получаю следующее сообщение об ошибке -

(a:DeserializationFailed) The formatter threw an exception while trying to deserialize the message: There was an error while trying to deserialize parameter https://adcenter.microsoft.com/v8:ReportRequest. The InnerException message was 'There was an error deserializing the object of type Microsoft.AdCenter.Advertiser.Reporting.Api.DataContracts.Request.ReportRequest. The value '' cannot be parsed as the type 'Int32'.'. Please see InnerException for more details.

Мне кажется, как будто он не может принимать значения I установили в качестве даты начала/конца в Params. Это работает, когда PARAMS [: старт]/[: конец] значения равны нулю

Вот контроллер код установки даты Params (DatePicker отлично работает для всех других запросов):

#Start Bing Reporting Code - set date for request ID 

if params[:start].nil? 
bing_start_date = DateTime.parse((Date.today - 7).to_s).strftime("%Y-%m-%d") 
    yearstart = bing_start_date[0,4] 
    monthstart = bing_start_date[5..6] 
    daystart = bing_start_date[8..9] 

bing_end_date = DateTime.parse((Date.today - 1).to_s).strftime("%Y-%m-%d") 
    yearend = bing_end_date[0,4] 
    monthend = bing_end_date[5..6] 
    dayend = bing_end_date[8..9] 

else 
bing_start_date = params[:start] 
    yearstart = bing_start_date[2,4] 
    monthstart = bing_start_date[5..6] 
    daystart = bing_start_date[8..9] 

bing_end_date = params[:end] 
    yearend = bing_end_date[2,4] 
    monthend = bing_end_date[5..6] 
    dayend = bing_end_date[8..9] 
end 

Здесь это тело запроса SOAP, где я установить диапазон дат (используя Савон камень):

soap.body = "<CustomDateRangeEnd i:nil=\"false\"><Day>#{dayend}</Day><Month>#{monthend}</Month><Year>#{yearend}</Year></CustomDateRangeEnd><CustomDateRangeStart i:nil=\"false\"><Day>#{daystart}</Day><Month>#{monthstart}</Month><Year>#{yearstart}</Year></CustomDateRangeStart></Time></ReportRequest>" 

Он отлично работает Если бы я просто установить конец года/начало, monthend/старт, dayend/запуска переменные вручную следующим образом:

yearstart = '2014' 
    monthstart = '01' 
    daystart = '01' 
    #this would set the start date properly to Jan 1 2014 

ответ

0

Глупая ошибка. Я использовал один и тот же начальный индекс/длину и диапазоны для оператора «if», как и для «else». В результате он был метания и пустая строка в <day>

Выходной сигнал дата для «если» был "2014-01-13" и выход для еще был "20140113"

Поэтому мне нужно настроить индекс/длина и диапазоны, как так:

bing_start_date = params[:start] 
    yearstart = bing_start_date[0,4] 
    monthstart = bing_start_date[4..5] 
    daystart = bing_start_date[6..7] 
Смежные вопросы