Ошибка http запроса самп

Расшифровка 55 состояний прикладного протокола HTTP (протокол передачи гипертекста): от информационных сообщений до ошибок.

Во время запроса информации с удаленного веб-сервера может возникнуть ошибка. Тогда веб-сервер посылает в ответ код ошибки HTTP. Например 404 — Not Found (ресурс не найден).

Коды состояния HTTP состоят из трех цифр от 100 и до 510. Они делятся на следующие группы:

  1. Информационные (100-105).
  2. Успешные (200-226).
  3. Перенаправление (300-307).
  4. Ошибка клиента (400-499).
  5. Ошибка сервера (500-510).

Чтобы получить сведения об ошибке, введите её код в поле поиска по странице. Для этого нажмите сочетание клавиш CTRL + F и укажите номер.

100

Continue
Cервер удовлетворён начальными сведениями о запросе, клиент может продолжать пересылать заголовки. Появился в HTTP/1.1.

101

Switching Protocols
Сервер предлагает перейти на более подходящий для указанного ресурса протокол; список предлагаемых протоколов сервер обязательно указывает в поле заголовкаUpdate. Если клиента это заинтересует, то он посылает новый запрос с указанием другого протокола. Появился в HTTP/1.1.

102

Processing
Запрос принят, но на его обработку понадобится длительное время. Используется сервером, чтобы клиент не разорвал соединение из-за превышения времени ожидания. Клиент при получении такого ответа должен сбросить таймер и дожидаться следующей команды в обычном режиме. Появился в WebDAV.

200

ОК
Успешный запрос. Если клиентом были запрошены какие-либо данные, то они находятся в заголовке и/или теле сообщения. Появился в HTTP/1.0.

201

Created
В результате успешного выполнения запроса был создан новый ресурс. Сервер должен указать его местоположение в заголовке Location. Серверу рекомендуется[источник не указан 336 дней] ещё указывать в заголовке характеристики созданного ресурса (например, в поле Content-Type). Если сервер не уверен, что ресурс действительно будет существовать к моменту получения данного сообщения клиентом, то лучше использовать ответ с кодом 202. Появился в HTTP/1.0.

202

Accepted
Запрос был принят на обработку, но она не завершена. Клиенту не обязательно дожидаться окончательной передачи сообщения, так как может быть начат очень долгий процесс. Появился в HTTP/1.0.

203

Non-Authoritative Information
Аналогично ответу 200, но в этом случае передаваемая информация была взята не из первичного источника (резервной копии, другого сервера и т. д.) и поэтому может быть неактуальной. Появился в HTTP/1.1.

204

No Content
Сервер успешно обработал запрос, но в ответе были переданы только заголовки без тела сообщения. Клиент не должен обновлять содержимое документа, но может применить к нему полученные метаданные. Появился в HTTP/1.0.

205

Reset Content
Сервер обязывает клиента сбросить введённые пользователем данные. Тела сообщения сервер при этом не передаёт и документ обновлять не обязательно. Появился в HTTP/1.1.

206

Partial Content
Сервер удачно выполнил частичный GET-запрос, возвратив только часть сообщения. В заголовке Content-Range сервер указывает байтовые диапазоны содержимого. Особое внимание при работе с подобными ответами следует уделить кэшированию. Появился в HTTP/1.1. (подробнее…)

207

Multi-Status
Сервер передаёт результаты выполнения сразу нескольких независимых операций. Они помещаются в само тело сообщения в виде XML-документа с объектом multistatus. Не рекомендуется размещать в этом объекте статусы из серии 1xx из-за бессмысленности и избыточности. Появился в WebDAV.

226

IM Used
Заголовок A-IM от клиента был успешно принят и сервер возвращает содержимое с учётом указанных параметров. Введено в RFC 3229 для дополнения протокола HTTP поддержкой дельта-кодирования.

300

Multiple Choices
По указанному URI существует несколько вариантов предоставления ресурса по типу MIME, по языку или по другим характеристикам. Сервер передаёт с сообщением список альтернатив, давая возможность сделать выбор клиенту автоматически или пользователю. Появился в HTTP/1.0.

301

Moved Permanently
Запрошенный документ был окончательно перенесен на новый URI, указанный в поле Location заголовка. Некоторые клиенты некорректно ведут себя при обработке данного кода. Появился в HTTP/1.0.

302

Found, Moved Temporarily
Запрошенный документ временно доступен по другому URI, указанному в заголовке в поле Location. Этот код может быть использован, например, приуправляемом сервером согласовании содержимого. Некоторые клиенты некорректно ведут себя при обработке данного кода. Введено в HTTP/1.0.

303

See Other
Документ по запрошенному URI нужно запросить по адресу в поле Location заголовка с использованием метода GET несмотря даже на то, что первый запрашивался иным методом. Этот код был введён вместе с 307-ым для избежания неоднозначности, чтобы сервер был уверен, что следующий ресурс будет запрошен методом GET. Например, на веб-странице есть поле ввода текста для быстрого перехода и поиска. После ввода данных браузер делает запрос методом POST, включая в тело сообщения введённый текст. Если обнаружен документ с введённым названием, то сервер отвечает кодом 303, указав в заголовке Location его постоянный адрес. Тогда браузер гарантировано его запросит методом GET для получения содержимого. В противном случае сервер просто вернёт клиенту страницу с результатами поиска. Введено в HTTP/1.1.

304

Not Modified
Сервер возвращает такой код, если клиент запросил документ методом GET, использовал заголовок If-Modified-Since или If-None-Match и документ не изменился с указанного момента. При этом сообщение сервера не должно содержать тела. Появился в HTTP/1.0.

305

Use Proxy
Запрос к запрашиваемому ресурсу должен осуществляться через прокси-сервер, URI которого указан в поле Location заголовка. Данный код ответа могут использовать только исходные HTTP-сервера (не прокси). Введено в HTTP/1.1.

306

(зарезервировано)
использовавшийся раньше код ответа, в настоящий момент зарезервирован. Упомянут в RFC 2616 (обновление HTTP/1.1).

307

Temporary Redirect
Запрашиваемый ресурс на короткое время доступен по другому URI, указанный в поле Location заголовка. Этот код был введён вместе с 303 вместо 302-го для избежания неоднозначности. Введено в RFC 2616 (обновление HTTP/1.1).

400

Bad Request
Сервер обнаружил в запросе клиента синтаксическую ошибку. Появился в HTTP/1.0.

401

Unauthorized
Для доступа к запрашиваемому ресурсу требуется аутентификация. В заголовке ответ должен содержать поле WWW-Authenticate с перечнем условий аутентификации. Клиент может повторить запрос, включив в заголовок сообщения поле Authorization с требуемыми для аутентификации данными.

402

Payment Required
Предполагается использовать в будущем. В настоящий момент не используется. Этот код предусмотрен для платных пользовательских сервисов, а не для хостинговыхкомпаний. Имеется в виду, что эта ошибка не будет выдана хостинговым провайдером в случае просроченной оплаты его услуг. Зарезервирован, начиная с HTTP/1.1.

403

Forbidden
Сервер понял запрос, но он отказывается его выполнять из-за ограничений в доступе для клиента к указанному ресурсу. Если для доступа к ресурсу требуется аутентификация средствами HTTP, то сервер вернёт ответ 401 или 407 при использовании прокси. В противном случае ограничения были заданы администратором сервера или разработчиком веб-приложения и могут быть любыми в зависимости от возможностей используемого программного обеспечения. В любом случае клиенту следует сообщить причины отказа в обработке запроса. Наиболее вероятными причинами ограничения может послужить попытка доступа к системным ресурсам веб-сервера (например, файлам .htaccess или .htpasswd) или к файлам, доступ к которым был закрыт с помощью конфигурационных файлов, требование аутентификации не средствами HTTP, например, для доступа к системе управления содержимым или разделу для зарегистрированных пользователей либо сервер не удовлетворён IP-адресом клиента, например, при блокировках. Появился в HTTP/1.0.

404

Not Found
Самая распространенная ошибка при пользовании Интернетом, основная причина — ошибка в написании адреса Web-страницы. Сервер понял запрос, но не нашёл соответствующего ресурса по указанному URI. Если серверу известно, что по этому адресу был документ, то ему желательно использовать код 410. Ответ 404 может использоваться вместо 403, если требуется тщательно скрыть от посторонних глаз определённые ресурсы. Появился в HTTP/1.0.

405

Method Not Allowed
Указанный клиентом метод нельзя применить к текущему ресурсу. В ответе сервер должен указать доступные методы в заголовке Allow, разделив их запятой. Эту ошибку сервер должен возвращать, если метод ему известен, но он не применим именно к указанному в запросе ресурсу, если же указанный метод не применим на всём сервере, то клиенту нужно вернуть код 501 (Not Implemented). Появился в HTTP/1.1.

406

Not Acceptable
Запрошенный URI не может удовлетворить переданным в заголовке характеристикам. Если метод был не HEAD, то сервер должен вернуть список допустимых характеристик для данного ресурса. Появился в HTTP/1.1.

407

Proxy Authentication Required
Ответ аналогичен коду 401 за исключением того, что аутентификация производится для прокси-сервера. Механизм аналогичен идентификации на исходном сервере. Появился в HTTP/1.1.

408

Request Timeout
Время ожидания сервером передачи от клиента истекло. Клиент может повторить аналогичный предыдущему запрос в любое время. Например, такая ситуация может возникнуть при загрузке на сервер объёмного файла методом POST или PUT. В какой-то момент передачи источник данных перестал отвечать, например, из-за повреждения компакт-диска или потеря связи с другим компьютером в локальной сети. Пока клиент ничего не передаёт, ожидая от него ответа, соединение с сервером держится. Через некоторое время сервер может закрыть соединение со своей стороны, чтобы дать возможность другим клиентам сделать запрос. Этот ответ не возвращается, когда клиент принудительно остановил передачу по команде пользователя или соединение прервалось по каким-то иным причинам, так как ответ уже послать невозможно. Появился в HTTP/1.1.

409

Conflict
Запрос не может быть выполнен из-за конфликтного обращения к ресурсу. Такое возможно, например, когда два клиента пытаются изменить ресурс с помощью метода PUT.Появился в HTTP/1.1.

410

Gone
Такой ответ сервер посылает, если ресурс раньше был по указанному URL, но был удалён и теперь недоступен. Серверу в этом случае неизвестно и местоположение альтернативного документа, например, копии). Если у сервера есть подозрение, что документ в ближайшее время может быть восстановлен, то лучше клиенту передать код 404. Появился в HTTP/1.1.

411

Length Required
Для указанного ресурса клиент должен указать Content-Length в заголовке запроса. Без указания этого поля не стоит делать повторную попытку запроса к серверу по данному URI. Такой ответ естественен для запросов типа POST и PUT. Например, если по указанному URI производится загрузка файлов, а на сервере стоит ограничение на их объём. Тогда разумней будет проверить в самом начале заголовок Content-Length и сразу отказать в загрузке, чем провоцировать бессмысленную нагрузку, разрывая соединение, когда клиент действительно пришлёт слишком объёмное сообщение. Появился в HTTP/1.1.

412

Precondition Failed
Возвращается, если ни одно из условных полей заголовка[неизвестный термин] запроса не было выполнено. Появился в HTTP/1.1.

413

Request Entity Too Large
Возвращается в случае, если сервер отказывается обработать запрос по причине слишком большого размера тела запроса. Сервер может закрыть соединение, чтобы прекратить дальнейшую передачу запроса. Если проблема временная, то рекомендуется в ответ сервера включить заголовок Retry-After с указанием времени, по истечении которого можно повторить аналогичный запрос. Появился в HTTP/1.1.

414

Request-URL Too Long
Сервер не может обработать запрос из-за слишком длинного указанного URL. Такую ошибку можно спровоцировать, например, когда клиент пытается передать длинные параметры через метод GET, а не POST. Появился в HTTP/1.1.

415

Unsupported Media Type
По каким-то причинам сервер отказывается работать с указанным типом данных при данном методе. Появился в HTTP/1.1.

416

Requested Range Not Satisfiabl
В поле Range заголовка запроса был указан диапазон за пределами ресурса и отсутствует поле If-Range. Если клиент передал байтовый диапазон, то сервер может вернуть реальный размер в поле Content-Range заголовка. Данный ответ не следует использовать при передаче типа multipart/byteranges[источник не указан 336 дней]. Введено в RFC 2616 (обновление HTTP/1.1).

417

Expectation Failed
По каким-то причинам сервер не может удовлетворить значению поля Expect заголовка запроса. Введено в RFC 2616 (обновление HTTP/1.1).

422

Unprocessable Entity
Сервер успешно принял запрос, может работать с указанным видом данных, в теле запроса XML-документ имеет верный синтаксис, но имеется какая-то логическая ошибка, из-за которой невозможно произвести операцию над ресурсом. Введено в WebDAV.

423

Locked
Целевой ресурс из запроса заблокирован от применения к нему указанного метода. Введено в WebDAV.

424

Failed Dependency
Реализация текущего запроса может зависеть от успешности выполнения другой операции. Если она не выполнена и из-за этого нельзя выполнить текущий запрос, то сервер вернёт этот код. Введено в WebDAV.

425

Unordered Collection —
Посылается, если клиент послал запрос, обозначив положение в неотсортированной коллекции или используя порядок следования элементов, отличный от серверного[уточнить]. Введено в черновике по WebDAV Advanced Collections Protocol[14].

426

Upgrade Required
Сервер указывает клиенту на необходимость обновить протокол. Заголовок ответа должен содержать правильно сформированные поля Upgrade и Connection. Введено вRFC 2817 для возможности перехода к TLS посредством HTTP.

449

Retry With
Возвращается сервером, если для обработки запроса от клиента поступило недостаточно информации. При этом в заголовок ответа помещается поле Ms-Echo-Request. Введено корпорацией Microsoft для WebDAV. В настоящий момент как минимум используется программой Microsoft Money.

456

Unrecoverable Error
Возвращается сервером, если обработка запроса вызывает некорректируемые сбои в таблицах баз данных[источник не указан 336 дней]. Введено корпорацией Microsoftдля WebDAV.

500

Internal Server Error
Любая внутренняя ошибка сервера, которая не входит в рамки остальных ошибок класса. Появился в HTTP/1.0.

501

Not Implemented
Сервер не поддерживает возможностей, необходимых для обработки запроса. Типичный ответ для случаев, когда сервер не понимает указанный в запросе метод. Если же метод серверу известен, но он не применим к данному ресурсу, то нужно вернуть ответ 405. Появился в HTTP/1.0.

502

Bad Gateway
Сервер, выступая в роли шлюза или прокси-сервера, получил недействительное ответное сообщение от вышестоящего сервера. Появился в HTTP/1.0.

503

Service Unavailable
Сервер временно не имеет возможности обрабатывать запросы по техническим причинам (обслуживание, перегрузка и прочее). В поле Retry-After заголовка сервер может указать время, через которое клиенту рекомендуется повторить запрос. Хотя во время перегрузки очевидным кажется сразу разрывать соединение, эффективней может оказаться установка большого значения поля Retry-After для уменьшения частоты избыточных запросов. Появился в HTTP/1.0.

504

Gateway Timeout
Сервер в роли шлюза или прокси-сервера не дождался ответа от вышестоящего сервера для завершения текущего запроса. Появился в HTTP/1.1.

505

HTTP Version Not Supported
Сервер не поддерживает или отказывается поддерживать указанную в запросе версию протокола HTTP. Появился в HTTP/1.1.

506

Variant Also Negotiates
В результате ошибочной конфигурации выбранный вариант указывает сам на себя, из-за чего процесс связывания прерывается. Экспериментальное. Введено в RFC 2295 для дополнения протокола HTTP технологией Transparent Content Negotiation.

507

Insufficient Storage
Не хватает места для выполнения текущего запроса. Проблема может быть временной. Введено в WebDAV.

509

Bandwidth Limit Exceeded
Используется при превышении веб-площадкой отведённого ей ограничения на потребление трафика. В данном случае владельцу площадки следует обратиться к своему хостинг-провайдеру. В настоящий момент данный код не описан ни в одном RFC и используется только модулем «bw/limited», входящим в панель управления хостингом cPanel, где и был введён.

510

Not Extended
На сервере отсутствует расширение, которое желает использовать клиент. Сервер может дополнительно передать информацию о доступных ему расширениях. Введено в RFC 2774 для дополнения протокола HTTP поддержкой расширений.

From SA-MP Wiki

Jump to: navigation, search

Description:

Sends a threaded HTTP request.

HTTP was added in SA-MP 0.3b This function was added in SA-MP 0.3b and will not work in earlier versions!

Parameters:

(index, type, url[], data[], callback[])

index ID used to differentiate requests that are sent to the same callback (useful for playerids)
type The type of request you wish to send.
url[] The URL you want to request. (Without ‘http://’)
data[] Any POST data you want to send with the request.
callback[] Name of the callback function you want to use to handle responses to this request.

Return Values:

1 on success, 0 on failure

Request types

HTTP_GET — Sends a regular HTTP request.

HTTP_POST — Sends a HTTP request with POST data.

HTTP_HEAD — Sends a regular HTTP request, but ignores any response data — returning only the response code.

Response Codes

HTTP_ERROR_BAD_HOST			1
HTTP_ERROR_NO_SOCKET			2
HTTP_ERROR_CANT_CONNECT	                3
HTTP_ERROR_CANT_WRITE			4
HTTP_ERROR_CONTENT_TOO_BIG		5
HTTP_ERROR_MALFORMED_RESPONSE	        6
Image:32px-Ambox_warning_orange.png

Note

As well as the response codes listed above, there are also all of the typical HTTP responses such as 404 (Page not found), 500 (Server error) or 403 (forbidden)

Example Usage:

forward MyHttpResponse(index, response_code, data[]);
 
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp("/hello",cmdtext,true))
    {
        HTTP(playerid, HTTP_GET, "kc.gd/hello.txt", "", "MyHttpResponse");
        return 1;
    }
    return 0;
}
 
public MyHttpResponse(index, response_code, data[])
{
    // In this callback "index" would normally be called "playerid" ( if you didn't get it already :) )
    new
        buffer[ 128 ];
    if(response_code == 200) //Did the request succeed?
    {
        //Yes!
        format(buffer, sizeof(buffer), "The URL replied: %s", data);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
    else
    {
        //No!
        format(buffer, sizeof(buffer), "The request failed! The response code was: %d", response_code);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
}

Описание:

Вызывается при завершении HTTP-запроса. Данная функция не имеет конкретного названия, т.к. оно указывается пользователем (см. пример).

Параметры:

(index, response_code, data[])

index Индекс, указанный 1-м параметром в вызове функции HTTP().
response_code Код ответа на HTTP-запрос. Помимо общепринятых кодов в SA-MP также различаются дополнительные:

  • HTTP_ERROR_BAD_HOST — указан неправильный URL.
  • HTTP_ERROR_NO_SOCKET — отсутствует сетевой интерфейс (сокет).
  • HTTP_ERROR_CANT_CONNECT — не удалось подключиться к указанному в URL ресурсу (ресурс недоступен).
  • HTTP_ERROR_CANT_WRITE — не удалось отправить данные POST-запроса.
  • HTTP_ERROR_CONTENT_TOO_BIG — слишком большое количество данных в ответе на запрос.
  • HTTP_ERROR_MALFORMED_RESPONSE — неправильно сформированные данные ответа на запрос.
data[] Данные, полученные в ответ на запрос.

Возвращаемое значение:

Возвращаемое значение не обрабатывается сервером.

Пример использования:

CMD:http(playerid, params[])
{
    HTTP(playerid, HTTP_GET, «pawn-lang.org», «», «MyHttpResponse»);
    return SendClientMessage(playerid, 1, «Запрос отправлен.»);
}

// Вместо «MyHttpResponse» можно задать функции любое другое название,
// главное не забыть указать то же самое название в вызове функции HTTP().
forward MyHttpResponse(index, response_code, data[]);
public  MyHttpResponse(index, response_code, data[])
{
    new string[144];

    // Если HTTP-запрос совершился успешно (код 200), выведем ответ сайта, иначе — сообщим код ошибки.
    if (response_code == 200)
        format(string, sizeof(string), «Ответ сайта: %s», data);
    else
        format(string, sizeof(string), «Неудача; запрос завершился с кодом %d», response_code);

    // В параметре index содержится ID игрока, который был передан 1-м параметром в вызове HTTP().
    return SendClientMessage(index, 1, string);
}

См. также:

  • HTTP


#1

Пользователь офлайн
 

Отправлено 25 июня 2020 — 15:26

  • Прохожий

Приветствую всех юзеров Pawn-Wiki. Мне очень нужна помощь! При попытке отправить код на ВК страницу (через VK Security) в консоли пишет: [VK Security] Сбой в запросе, код ответа: 400. Что только не пытался сделать, всё в пустую. Когда захожу на сайт сам и пишу POST-запрос то всё приходит. Код прилагаю:

SendVKMessage(playerid,message[],vkid)
{
    format(glstr, sizeof(glstr), "домен/vk_sender.php?message=%s&to=%d", message, vkid);
    HTTP(playerid, HTTP_POST, glstr, "" ,"@__SendMessageResponse");
    return 1;
}

@__SendMessageResponse(index, response_code, data[]);
@__SendMessageResponse(index, response_code, data[])
{
    if(response_code == 200) return print("[VK Security] Сообщение отправлено!");
    else printf("[VK Security] Сбой в запросе, код ответа: %d", response_code);
    return 1;
}

Сообщение отредактировал MaksDroid: 25 июня 2020 — 15:26

0



#2

Отправлено 25 июня 2020 — 19:30

  • Пуфнеры вперед

Скорее всего там идет редирект на HTTPS, а HTTP() не умеет работать с HTTPS



#3

Отправлено 25 июня 2020 — 19:34

  • Местный

Скинь домен
И ты не пробовал вручную проверить отправку?

0



#4

Отправлено 26 июня 2020 — 09:14

  • Профессионал

Просмотр сообщенияGAWESOME (25 июня 2020 — 19:30) писал:

Скорее всего там идет редирект на HTTPS, а HTTP() не умеет работать с HTTPS

Скорее всего так и есть.

Автору:
Вот плагин, который поддерживает HTTPS (но нужно будет ковыряться с JSON, хотя это даже на пользу)

Сообщение отредактировал MassonN: 26 июня 2020 — 09:17

0



#5

Отправлено 26 июня 2020 — 09:43

  • Evil Scripter

Судя по этой строке

 format(glstr, sizeof(glstr), "домен/vk_sender.php?message=%s&to=%d", message, vkid);

он сначала обращается к скрипту на своём сайте/хостинге. И уже сам сайт должен отправлять запрос в HTTPS, ибо именно для этого подобные действия обычно и делают, как в случае с той же отправкой сообщения на почту.

Тут следует у автора уточнить: а выполняет ли скрипт на сайте свои действия, если к нему обратиться из браузера? Не просто смотреть на код результата, а именно на функционал, который ты заложил в PHP-скрипт. Ибо вполне возможно, что ты либо старым API VK пользуешься, либо как-то криво авторизируешься/пытаешься получить информацию, требующую авторизации.

Сообщение отредактировал DeimoS: 26 июня 2020 — 09:44

0



#6

Отправлено 26 июня 2020 — 14:17

  • Профессионал

Просмотр сообщенияDeimoS (26 июня 2020 — 09:43) писал:

Нажмите сюда, чтобы прочитать это сообщение. [

Показать

]

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

0



#7

Отправлено 26 июня 2020 — 16:27

  • Evil Scripter

Просмотр сообщенияMassonN (26 июня 2020 — 14:17) писал:

опять же, его сайт также может выполнять переадресацию на HTTPS.

Сайт и должен отправлять HTTPS-запрос. В этом и смысл вызова скрипта. Но серверу на этот запрос совершенно всё равно. Как, собственно, и на то, что делает скрипт. Он лишь вызывает скрипт через HTTP-запрос, передавая ему определённую информацию, а дальше ждёт от него ответ.

0



#8

Отправлено 26 июня 2020 — 16:57

  • Профессионал

Просмотр сообщенияDeimoS (26 июня 2020 — 16:27) писал:

Нажмите сюда, чтобы прочитать это сообщение. [

Показать

]

я имею ввиду сам сайт переадресует запрос с сервера на https и отправит запрос обратно к серверу HTTPS

0



#9

Отправлено 26 июня 2020 — 17:14

  • Evil Scripter

Просмотр сообщенияMassonN (26 июня 2020 — 16:57) писал:

я имею ввиду сам сайт переадресует запрос с сервера на https и отправит запрос обратно к серверу HTTPS

Он никакой запрос обратно серверу не отправляет. И тем более не меняет протокол. Как ты с сервера к сайту по HTTP обратился, так эта «сессия» и висит открытой, пока скрипт не выполнится и сайт не отправит ответ (или время ожидания ответа не истечёт). Суть этих протоколов и состоит в том, чтоб когда один из серверов получал запрос от другого, первоначальный сервер понимал какому серверу, как и какой ответ отправлять.

UPD: И сайт никакой переадресацией запросов от сервера не занимается. Ещё раз: суть кода заключается в том, что ты HTTP-запросом вызываешь скрипт на хостинге сайта и передаёшь в него определённую информацию. Сам скрипт, при этом, с этой информацией может сделать всё, что угодно: и HTTPS-запрос отправить, и арифметические операции провести, и заняться форматированием строки — без разницы. Главное, что когда скрипт закончит свою работу, он сформирует определённый результат и отправит его в виде ответа. Соответственно, если скрипт посылал HTTPS-запрос, то сначала он сам получит ответ от сервера, куда тот запрос посылался, а потом этот ответ отправит уже твоему SA-MP серверу, с которого ты посылал HTTP-запрос. Можно, конечно, реализовать подобие переадресации, но тогда запрос на «переадресацию» придётся передавать в качестве параметра HTTP-запроса, вызывая скрипт, который уже извлечёт запрос из параметра и отправит его куда укажешь.

Сообщение отредактировал DeimoS: 26 июня 2020 — 17:20

0


  • ← Предыдущая тема
  • Вопросы по скриптингу
  • Следующая тема →

  • Вы не можете создать новую тему
  • Тема закрыта


1 человек читают эту тему
0 пользователей, 1 гостей, 0 скрытых пользователей

Отправляет HTTP запрос (потоковый).

(index, type, url[], data[], callback[])

index — ID для разделений HTTP запросов, если они отправляются на один и тот же обработчик (коллбэк). 

type — Тип HTTP-запроса (будут указаны ниже). 

url[] — URL адрес для отправки HTTP запроса (без «http://»).

data[] — Любые POST-данные, которые вы хотите отправить с запросом (использовать при отправке с типом «POST»).

callback[] — Обратный вызов (коллбэк), в котором вы хотите обрабатывать ответы от сервера.

ВОЗВРАЩАЕМЫЕ ФУНКЦИЕЙ ЗНАЧЕНИЯ:

  • 1 — выполнено успешно.
  • 0 — успешно не выполнено.

ТИПЫ ЗАПРОСОВ:

  • HTTP_GET — отправляет обычный HTTP запрос. 
  • HTTP_POST — отправляет HTTP запрос с POST данными.
  • HTTP_HEAD — Отправляет обычный HTTP-запрос, но игнорирует любые данные ответа — возвращает только код ответа.

КОДЫ ОТВЕТОВ ОТ ОПРАШИВАЕМОГО РЕСУРСА:

    HTTP_ERROR_BAD_HOST				1 // невозможно соединиться: URL указан неверно
    HTTP_ERROR_NO_SOCKET			2 // невозможно соединиться: нет соединения с интернетом, или сервер не может открыть сокет для соединения
    HTTP_ERROR_CANT_CONNECT	        3 // нет соединения
    HTTP_ERROR_CANT_WRITE			4 // нет прав на запись
    HTTP_ERROR_CONTENT_TOO_BIG		5 // содержимое слишком большое (невозможно столько записать в data[])
    HTTP_ERROR_MALFORMED_RESPONSE	6 // неверный запрос
    // ОБЩИЕ ТИПИЧНЫЕ HTTP КОДЫ, которые также используются в response_code
    200 - OK - выполнено успешно
    404 - Not Found (не найдено)
    301 / 302 - переадресация (временно / постоянно)
    500 - Internal Error - ошибка сервера (не игрового, а опрашиваемого)
    403 - Forbidden (доступ воспрещен)
    

ПРИМЕР ИСПОЛЬЗОВАНИЯ:

forward MyHttpResponse(index, response_code, data[]);
 
public OnPlayerCommandText(playerid, cmdtext[])
{
    if(!strcmp("/hello",cmdtext,true))
    {
        HTTP(playerid, HTTP_GET, "kc.gd/hello.txt", "", "MyHttpResponse");
        return 1;
    }
    return 0;
}
 
public MyHttpResponse(index, response_code, data[]) 
{
    new
        buffer[ 128 ];
    if(response_code == 200) //является ли запрос успешным?
    {
        //ДА!
        format(buffer, sizeof(buffer), "URL ответил вот что: %s", data);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
    else // а если не так
    {
        //НИТ!
        format(buffer, sizeof(buffer), "Сервер ответил с ошибкой! Код ответа (HTTP): %d", response_code);
        SendClientMessage(index, 0xFFFFFFFF, buffer);
    }
}

  • Ошибка http запроса код ошибки 409
  • Ошибка http запроса код ошибки 403
  • Ошибка http запроса код ошибки 402 доступ запрещен необходима оплата тарифа апи
  • Ошибка http запроса код ошибки 400 диадок
  • Ошибка http запроса pkgi ps3