Страницы

Поиск по вопросам

вторник, 10 декабря 2019 г.

Как передать в cURL дату в формате Java Date?

#php #java #android #curl #parsecom


Есть Android-приложение, оно отправляет на сервер через Parse.com один из параметров
в формате Date:

HashMap p = new HashMap();
p.put("created", Calendar.getInstance().getTime());
ParseCloud.callFunctionInBackground(f, p, v);


Как передать этот параметр в таком же формате, но только через cURL в PHP? Пробовал
передавать в массиве строковое значение или Date в виде массива, сервер не принимает
такие запросы:

array('created'=>'Sun Nov 12 2017 02:58:09 GMT+0300')
array('__type'=>'Date','iso'=>'2017-11-11T12:35:39.273Z')


Как понимаю, надо передать параметр в виде самого объекта Date, но вопрос как он
будет точно выглядеть в сыром текстовом виде?

Это сам код для выполнения cURL-запроса:

    // post fields
    $post_fields = array('created'=>'здесь должно быть значение для created');
    // options
    $options = array(
        CURLOPT_URL => $target_url,
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_HEADER => true,
        CURLOPT_HTTPHEADER => $headers,
        CURLOPT_POST => true,
        CURLOPT_POSTFIELDS => http_build_query($post_fields),
        CURLOPT_CONNECTTIMEOUT => 20,
        CURLOPT_SSL_VERIFYPEER => false,
        CURLOPT_TIMEOUT => 20,
        CURLOPT_USERAGENT => $user_agent
    );
    // curl
    $curl = curl_init();
    curl_setopt_array($curl, $options);
    $data = curl_exec($curl);
    curl_close($curl);

    


Ответы

Ответ 1



В PHP не силен, но если нужна строка вида yyyy-MM-dd'T'HH:mm:ss.SSS'Z' то по-моему, тут надо просто привести спецсимволы, а именно: двоеточие, одиночную кавычку, дефис и точку, - к формату URL, то есть (":") заменить на ("%3a") ("'") заменить на ("%27") ("-") заменить на ("%2d") (".") заменить на ("%2e") тогда строка из вашего cURL-запроса примет вид: $post_fields = array('created'=>'2017%2d11%2d17%27T%2708%3a54%3a27%2e727%27Z%27'); P.S. По рекомендации пользователя eugeneek, может быть, имеет смысл заменить 'created' на 'createdAt'

Ответ 2



Судя по исходникам SDK для Android: Все даты передаются в формате yyyy-MM-dd'T'HH:mm:ss.SSS'Z'. Нужный вам параметр называется createdAt. Получается вам нужно что-то типа: $post_fields = array('createdAt'=>'2017-11-17T08:54:27.727Z');

Комментариев нет:

Отправить комментарий