POST несколько [закрытых] параметров

Вы должны знать, что веб-сервис API геокодирования также возвращает статус в ответе. Статус показывает, есть ли в ответе действительный элемент или что-то пошло не так, и у вас нет результата.

Просмотрите документацию https://developers.google.com/maps/documentation/geocoding/intro#StatusCodes , и вы увидите, что возможны следующие статусы

  • "ОК"
  • "ZERO_RESULTS"
  • "OVER_DAILY_LIMIT"
  • "OVER_QUERY_LIMIT"
  • "REQUEST_DENIED"
  • "INVALID_REQUEST "
  • " UNKNOWN_ERROR "

Итак, прежде чем пытаться получить доступ к $dataset->results[0], сначала проверьте значение $dataset->status. Если это «ОК», вы можете безопасно получить результаты, в противном случае правильно обработайте код ошибки.

Фрагмент кода может быть

 $dataset = json_decode($jsonResponse);

 if ($dataset->status == "OK") {
     if (isset($dataset->results[0])) {
         $latitude = $dataset->results[0]->geometry->location->lat;
         $longitude = $dataset->results[0]->geometry->location->lng;
     }
 } elseif ($dataset->status == "ZERO_RESULTS") {
     //TODO: process zero results response 
 } elseif ($dataset->status == "OVER_DAILY_LIMIT" {
     //TODO: process over daily quota 
 } elseif ($dataset->status == "OVER_QUERY_LIMIT" {
     //TODO: process over QPS quota  
 } elseif ($dataset->status == "REQUEST_DENIED" {
     //TODO: process request denied  
 } elseif ($dataset->status == "INVALID_REQUEST" {
     //TODO: process invalid request response  
 } elseif ($dataset->status == "UNKNOWN_ERROR" {
     //TODO: process unknown error response 
 }

Надеюсь, это поможет!

13
задан Alex B 7 October 2008 в 10:27
поделиться

6 ответов

Я неправильно, или большинство ответов не относится к делу?

Для ответа точно на вопрос, да, можно отправить список разделенных запятой значений параметру POST. Честно говоря, я просто сделал быструю попытку со Сценарием PHP, но я не вижу, почему Java вел бы себя по-другому. Одна точка с запросами POST точно, что у Вас есть намного меньше ограничений на синтаксис (никакая потребность выйти = & или такой).

Поэтому, если Вы объясняете больше в деталях, что "не работает", возможно, мы можем помочь Вам больше.

13
ответ дан 1 December 2019 в 17:55
поделиться

Можно сделать это как избранный вход формы:

URL? param=value1& param=value2& param=value3

В зависимости от Вас язык и библиотека необходимо смочь получить массив значений для параметрического усилителя.

<час>

, Например, с asp.net mvc я делаю это для получения массива строк:

string[] values = Request.Form.GetValues("param");
14
ответ дан 1 December 2019 в 17:55
поделиться

Fionn является правильным. Используйте

url?param=value1&param=value2&param=value3

для устанавливания нескольких значений к единственному параметру. Для чтения значений в Servlet/JSP, можно использовать

String[] values = request.getParameterValues("param");
14
ответ дан 1 December 2019 в 17:55
поделиться

в минимальном 1 параметре запроса сообщения должен быть там в списке параметров. Если Вы добавляете параметр для запроса затем этого работа привычки. для этого u должен отправить параметр как скрытое поле формы. Или попытайтесь использовать следующий код

функция makePOSTRequest (URL, параметры) {

  http_request = false;
  if (window.XMLHttpRequest) { // Mozilla, Safari,...
     http_request = new XMLHttpRequest();
     if (http_request.overrideMimeType) {
        // set type accordingly to anticipated content type
        //http_request.overrideMimeType('text/xml');
        http_request.overrideMimeType('text/html');
     }
  } else if (window.ActiveXObject) { // IE
     try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP");
     } catch (e) {
        try {
           http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {}
     }
  }
  if (!http_request) {
     alert('Cannot create XMLHTTP instance');
     return false;
  }

  http_request.onreadystatechange = alertContents;
  http_request.open('POST', url, true);
  http_request.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
  http_request.setRequestHeader("Content-length", parameters.length);
  http_request.setRequestHeader("Connection", "close");
  http_request.send(parameters);

}

0
ответ дан 1 December 2019 в 17:55
поделиться

Набор, чтобы иметь Ваш параметр поставляет несколько значений путем именования его как массив. Вместо того, чтобы назвать вход "идентификатором", назовите его "идентификатором []"

<form method="post">
<select multiple name="id[]">
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
</select>
<input type="submit" value="send">
</form>

При обработке, не забудьте извлекать массив значений, отправленных именованным параметром.

3
ответ дан 1 December 2019 в 17:55
поделиться

ДОБЕРИТЕСЬ и POST имеют две различных цели. От записи HTTP Википедии:

ДОБИРАЮТСЯ

Запросы представление указанного ресурса. Обратите внимание, что ДОБИРАЮТСЯ, не должен использоваться для операций, которые вызывают побочные эффекты, такие как использование его для того, чтобы принять меры в веб-приложениях. Одна причина этого, это ДОБИРАЕТСЯ, может использоваться произвольно роботами или поисковыми роботами, которые не должны должны быть рассматривать побочные эффекты, которые должен вызвать запрос. Посмотрите надежные методы ниже.

POST

Отправляет данные, которые будут обработаны (например, от HTML-формы) к определенному ресурсу. Данные включены в тело запроса. Это может привести к созданию нового ресурса или обновлениям существующих ресурсов или обоих.

В основном, необходимо использовать, ДОБИРАЮТСЯ, чтобы, ну, в общем, ПОЛУЧИТЬ информацию и POST для любых действий, которые изменяют состояние сервера, такого как добавление новых записей.

0
ответ дан 1 December 2019 в 17:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: