Функция «netPut» позволяет осуществлять загрузку данных на сервер.
Краткое описание
int netPut(string url, mapping|string|blob data [, mapping &result]);
Параметр
Параметр | Значение |
url | URL (http, https, ftp и file — file применяется только к локальным файлам). |
data | Для переменной «data» можно использовать следующие ключи: «target» (строка) … абсолютный путь к каталогу (или файлу), в который сохраняется содержание ответа. В случае указания пути к каталогу, из URL, в путь к каталогу добавляется имя файла — для формирования конечного имени файла. Данное имя файла также сохраняется в переменной «result» под ключевым словом «target». Файл должен быть открыт для чтения, в противном случае функция возвращает -1 и завершается. Указанные ниже вызовы создают файл в: /tmp/console.png: netGet(«http://localhost/pictures/console.png», m, makeMapping(«target»,»/tmp/console.png»)); netGet(«http://localhost/pictures/console.png», m, makeMapping(«target», «/tmp»));—————————————————————————————————————————-«source» (string) …Содержание файла передается в URL. Если файл невозможно открыть для чтения функция возвращает -1 и завершается.—————————————————————————————————————————-«headers» (сопоставление) … Дополнительный заголовок, передаваемый на сервер. Ключ=HeaderName, значение=HeaderValue Пример:makeMapping(«User-Agent», «my special user agent»); В случае указания уже существующего заголовка, он будет перезаписан.—————————————————————————————————————————-«content» … Описывает тип данных содержания, сохраняемого в переменной result. Допустимые типы данных: строка и большой бинарный объект. например:options[«content»] = «»; // строкаoptions[«content»] = (blob)»»; // большой двоичный объект—————————————————————————————————————————-«ignoreSslErrors» … В случае передачи значения, которое не равно «dyn_string» или пустой «dyn_string», все SSL ошибки игнорируются. Тем не менее, все возникшие SSL ошибки возвращаются, и их можно найти в сопоставлении result[«sslErrors»]. При указании «dyn_string», необходимо указывать то, какие SSL ошибки можно игнорировать. В случае наличия других SSL ошибок функция возвращает -1 и завершается. Для получения дополнительной информации о ключевых словах возможных SSL ошибок, см. «sslErrors«. напр.:options[«ignoreSslErrors»] = «»; //Все SSL ошибки игнорируютсяoptions[«ignoreSslErrors»] = makeDynString(«CertificateUntrusted»);—————————————————————————————————————————-«followRedirection«…В случае указания «ЛОЖЬ» для параметра «bool», автоматическое «follow redirects» деактивируется. Обработка переадресаций Протокол HTTP позволяет серверу отправлять «redirection» ответ (переадресация). Таким образом, клиент знает, что требуемый ресурс доступен под другим URL. Функция «netGet» отсылает «redirection» ответ по умолчанию. Во избежание образования цикла переадресаций, число ответов ограничено. В случае превышения этого числа функция возвращает -1 (ошибка «RedirectionLoop»). Существует возможность активации и деактивации обработки переадресации с использованием ключа «followRedirection«. например,options[«followRedirection»] = false; // Деактивация автоматической переадресацииoptions[«followRedirection»] = true; // Автоматическая переадресация активирована (по умолчанию) |
&result | Переменная «result» содержит данные по умолчанию. В случае передачи переменной «string» или «blob», переменная содержит только «содержание» данных, но «заголовок» не передается. result[target]: абсолютный путь к каталогу или файлу, в котором сохранено «содержание» ответа. Имя файла можно найти в переменной «result» под названием «target». result[«sslErrors»]:. Все возникшие SSL ошибки возвращаются в сопоставлении result[«sslErrors»] |
Возвращаемое значение
В случае возникновения ошибок функция возвращает -1.
Описание
Функция «netPut» позволяет осуществлять загрузку данных на сервер.
В случае указания параметра «data» в качестве сопоставления, значение сохраняется в ключе «content». Допускаются только типы данных «string» или «blob». В случае отсутствия указания «content«, можно указать передаваемый файл с помощью ключевого слова «source» (см. вышеуказанный параметр «data«).
Функция получает ответ от сервера. Можно передавать ответ в параметр «result » или же можно указать целевой файл для параметра «data«.
Тип передаваемых данных можно указать с помощью ключевого слова «Content-Type». Тип содержания можно передать в ключ «headers«. При отсутствии точного указания типа данных, содержание определяется автоматически и используется заголовок по умолчанию типа содержимого.
В случае передачи переменной сопоставления в параметр «result«, дополнительно устанавливаются следующие ключи:
Ключ | Значение |
headers | Содержит сопоставление с парами ключ (имя заголовка) — значение (заголовок). Он также может быть пустым. напр.: «Last-Modified» : «Mon, 09 Sep 2013 09:08:45 GMT» «Date» : «Wed, 16 Jul 2014 07:37:13 GMT» «Content-Length» : «1127» «Content-Type» : «image/png» |
content | Содержит полученные данные. Типом данных по умолчанию является строка. Используя переменную «data» можно указывать тип данных. В случае указания целевого файла с использованием переменной «data» содержание всегда пустое. См. параметр «data« выше. |
url | URL, используемые при последнем запросе. В случае получения от сервера по протоколу HTTP ответа с переадресаций, он может отличаться от оригинального URL (см. Обработка переадресаций). |
httpStatusCodehttpStatusText | Для http/https связи, «httpStatusCode» и «httpStatusText» содержит последний HTTP код состояния (int) и соответствующую «Reson Phrase» (string), напр. «httpStatusCode» : 200 «httpStatusText» : «OK» См. http://tools.ietf.org/html/rfc2616#section-6.1.1 |
target | В случае указания целевого файла с помощью переменной «data«, ключевое слово «target» содержит абсолютный путь к файлу. |
errorString | В случае возникновения ошибки обмена данными «errorString» содержит поясняющий текст, предназначенный для чтения человеком. «error» и «errorString» всегда задаются вместе. В этом случае функция всегда возвращает -1. |
error | В случае ошибок функция возвращает строковое ключевое слово из следующего списка: «RedirectionLoop» … Обнаружено слишком большое количество переадресаций — (см. Redirection Handling) — Здесь описаны все значения «enum». Строка префиксов не используется, напр. «ConnectionRefusedError» http://qt-project.org/doc/qt-5/qnetworkreply.php#NetworkError-enum |
sslErrors | В случае возникновения SSL ошибки во время установления связи, список SSL ошибок передается в сопоставлении. Ключом в сопоставлении является строковое ключевое слово из списка ниже. Значением ключа является поясняющий текст ошибки. В случае если SSL ошибки не игнорируются (см. «options» ниже) функция возвращает -1 и завершается. Кроме того, переменная «result» не содержит каких-либо дополнительных ключей. Возможные ключевые SSL слова: «UnableToGetIssuerCertificate» «UnableToDecryptCertificateSignature» «UnableToDecodeIssuerPublicKey» «CertificateSignatureFailed» «CertificateNotYetValid» «CertificateExpired» «InvalidNotBeforeField» «InvalidNotAfterField» «SelfSignedCertificate» «SelfSignedCertificateInChain» «UnableToGetLocalIssuerCertificate» «UnableToVerifyFirstCertificate» «CertificateRevoked» «InvalidCaCertificate» «PathLengthExceeded» «InvalidPurpose» «CertificateUntrusted» «CertificateRejected» «SubjectIssuerMismatch» «AuthorityIssuerSerialNumberMismatch» «NoPeerCertificate» «HostNameMismatch» «NoSslSupport» «CertificateBlacklisted» «UnspecifiedError» Сопоставление «result» выглядит следующим образом: [mapping 1 items ..(«сопоставление 1 элемента») «sslErrors» : mapping 4 items // (сопоставление 4 элементов) «CertificateUntrusted» : «The root CA certificate is not trusted for this purpose» «UnableToVerifyFirstCertificate» : «No certificates could be verified» //(«Нет сертификатов для подтверждения») «UnableToGetLocalIssuerCertificate» : «The issuer certificate of a locally looked up certificate could not be found» «HostNameMismatch» : «The host name did not match any of the valid hosts for this certificate» |
Пример
/* Функция «netPut» позволяет осуществлять загрузку данных на сервер.. Используется «IgnoreSslErros» и, так как передается пустая строка, все SSL ошибки игнорируются. */main(){ mapping m; DebugN(netPut(«http://localhost:8080/data»,makeMapping(«content», «data to send»,»followRedirection», «», «ignoreSslErrors», «»), m), m); } |
Используется для объекта
Функции HTTP.
Доступность
UI, CTRL
См. также