netPut ()

Функция «netPut» позволяет осуществлять загрузку данных на сервер.

Краткое описание

int netPut(string url, mapping|string|blob data [, mapping &result]);

Параметр

ПараметрЗначение
urlURL (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« выше.
urlURL, используемые при последнем запросе. В случае получения от сервера по протоколу 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

См. также

netDelete()netGet()netHead()netPost()

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *