AddField (HttpRequest subroutine): Difference between revisions
m (1 revision) |
m (→Syntax terms) |
||
(17 intermediate revisions by 6 users not shown) | |||
Line 1: | Line 1: | ||
< | {{Template:HttpRequest:AddField subtitle}} | ||
The <var>AddField</var> method lets you add a form field name and value pair to the HTTP request that is to be sent to the HTTP server. | |||
==Syntax== | ==Syntax== | ||
{{Template:HttpRequest:AddField syntax}} | |||
===Syntax terms=== | ===Syntax terms=== | ||
<table class="syntaxTable"> | <table class="syntaxTable"> | ||
<tr><th> | <tr><th>httpRequest</th> | ||
<td>A previously defined and instantiated | <td>A previously defined and instantiated <var>HttpRequest</var> object. | ||
</td></tr> | </td></tr> | ||
<tr><th> | <tr><th>fieldName</th> | ||
<td>A string expression that names an HTTP form field. Field names are case insensitive. | <td>A string expression that names an HTTP form field. Field names are case insensitive. | ||
Passing multiple occurrences is allowed | Passing multiple occurrences is allowed; if a same-named field is already present, an additional instance is added. | ||
</td></tr> | </td></tr> | ||
<tr><th> | <tr><th>fieldValue</th> | ||
<td>A Longstring or a Stringlist object expression that results in a value for the field. If it is a Stringlist, a line-end sequence is appended to each Stringlist item as it is added to the Post data. The LineEnd ( | <td>A <var>[[Longstrings|Longstring]]</var> or a <var>[[Stringlist class|Stringlist]]</var> object expression that results in a value for the field. If it is a <var>Stringlist</var>, a line-end sequence is appended to each <var>Stringlist</var> item as it is added to the Post data. The <var>[[LineEnd (HttpRequest property)|LineEnd]]</var> property sets which of three line-end sequence options is appended. | ||
</td></tr> | </td></tr> | ||
<tr><th>file</th> | <tr><th>file</th> | ||
<td>A string that identifies the file to be uploaded. The default is no file specification, that is, a non-file data Post. This is an optional parameter. | <td>A string that identifies the file to be uploaded. The default is no file specification, that is, a non-file data Post. This is an optional parameter. | ||
</td></tr> | </td></tr> | ||
<tr><th> | <tr><th>translate</th> | ||
<td>This optional parameter controls whether the | <td>This optional <var>Boolean</var> parameter controls whether the <var class="term">fieldValue</var> content is processed with EBCDIC-to-ASCII translation. If <var class="term">translate</var> is not specified, the default is <var>True</var> (use EBCDIC-to-ASCII translation). If the value is <var>False</var>, no translation occurs. | ||
</td></tr></table> | </td></tr></table> | ||
==Usage notes== | ==Usage notes== | ||
<ul> | <ul> | ||
<li>See <var>[[ | <li>See <var>[[MultiPartFormEncoding (HttpRequest property)|MultiPartFormEncoding]]</var> for information about using <var>AddField</var> for a form used to Post file data. | ||
for a form used to Post file data. | <li><var>AddField</var> is designed for requests that have the <code>application/x-www-form-urlencoded</code> or <code>multipart/form-data</code> content types. It is an error to use <var>AddField</var> in a request that has, say, a <code>text/xml</code> content type. | ||
<li>AddField is designed for requests that have the | <li>If form fields are defined with <var>AddField</var>, no explicit content type is set with <var>[[AddHeader (HttpRequest subroutine)|AddHeader]]</var>, and multipart form encoding is ''not'' enabled with | ||
<code>application/x-www-form-urlencoded</code> or <code>multipart/form-data</code> | <var>MultiPartFormEncoding (HttpRequest property)|MultiPartFormEncoding</var>. The <var class="product">HTTP Helper</var> automatically sends the following request | ||
content types. | header on <var>Post</var> calls: | ||
It is an error to use AddField in a request that has, say, a | |||
content type. | |||
<li>If form fields are defined with AddField, no explicit content type is set | |||
with <var>[[AddHeader ( | |||
and multipart form encoding is ''not'' enabled with | |||
<var> | |||
header on Post calls: | |||
<p class="code"> content-type: application/x-www-form-urlencoded | <p class="code"> content-type: application/x-www-form-urlencoded | ||
</p> | </p> | ||
</ul> | </ul> | ||
==Example== | ==Example== | ||
The following <var class="product">User Language</var> prompts for a procedure name, stores the procedure in a <var>Stringlist</var>, and uploads the procedure using multipart form encoding.<p class="code">begin | The following <var class="product">User Language</var> prompts for a procedure name, stores the procedure in a <var>Stringlist</var>, and uploads the procedure using multipart form encoding. | ||
%request is object | <p class="code">begin | ||
%response is object | %request is object httpRequest | ||
%upfile is object | %response is object httpResponse | ||
%upfile is object stringlist | |||
%procname is string len 255 | %procname is string len 255 | ||
Line 57: | Line 46: | ||
%procname = $read('Enter proc name please') | %procname = $read('Enter proc name please') | ||
%rc = $procopn( %procname ) | %rc = [[$ProcOpn|$procopn]]( %procname ) | ||
if ( %rc ) then | if ( %rc ) then | ||
print 'could not open the proc, dude.' | print 'could not open the proc, dude.' | ||
stop | stop | ||
end if | end if | ||
%upfile = new | %upfile = [[New_(Stringlist_constructor)|new]] | ||
%upfile: | %upfile:[[AppendOpenProcedure_(Stringlist_function)|appendOpenProcedure]] | ||
%rc = $proccls | %rc = [[$ProcCls|$proccls]] | ||
%upfile:print | %upfile:[[Print_(Stringlist_function)|print]] | ||
%request = new | %request = [[New_(HttpRequest_constructor)|new]] | ||
%request:URL = 'whatever' | %request:URL = 'whatever' | ||
%request: | %request:multiPartFormEncoding = true | ||
%request: | %request:lineEnd = CR | ||
%request:addField('filename',%upfile,%procname) | %request:addField('filename',%upfile,%procname) | ||
%response = %request:post( 'CSOCK' ) | %response = %request:[[Post_(HttpRequest_function)|post]]( 'CSOCK' ) | ||
print %response:statusline | print %response:[[StatusLine_(HttpResponse_function)|statusline]] | ||
print %response:content | print %response:[[Content_(HttpResponse_function)|content]] | ||
end | end | ||
</p> | </p> | ||
==See also== | |||
<ul> | |||
<li>For information about <var>Stringlist</var> processing, see [[Stringlist class|"Stringlist class"]]. | |||
</ul> | |||
{{Template:HttpRequest:AddField footer}} |
Latest revision as of 15:31, 5 March 2013
Add a form field to the request (HttpRequest class)
The AddField method lets you add a form field name and value pair to the HTTP request that is to be sent to the HTTP server.
Syntax
httpRequest:AddField( fieldName, fieldValue, [file], [translate])
Syntax terms
httpRequest | A previously defined and instantiated HttpRequest object. |
---|---|
fieldName | A string expression that names an HTTP form field. Field names are case insensitive.
Passing multiple occurrences is allowed; if a same-named field is already present, an additional instance is added. |
fieldValue | A Longstring or a Stringlist object expression that results in a value for the field. If it is a Stringlist, a line-end sequence is appended to each Stringlist item as it is added to the Post data. The LineEnd property sets which of three line-end sequence options is appended. |
file | A string that identifies the file to be uploaded. The default is no file specification, that is, a non-file data Post. This is an optional parameter. |
translate | This optional Boolean parameter controls whether the fieldValue content is processed with EBCDIC-to-ASCII translation. If translate is not specified, the default is True (use EBCDIC-to-ASCII translation). If the value is False, no translation occurs. |
Usage notes
- See MultiPartFormEncoding for information about using AddField for a form used to Post file data.
- AddField is designed for requests that have the
application/x-www-form-urlencoded
ormultipart/form-data
content types. It is an error to use AddField in a request that has, say, atext/xml
content type. - If form fields are defined with AddField, no explicit content type is set with AddHeader, and multipart form encoding is not enabled with
MultiPartFormEncoding (HttpRequest property)|MultiPartFormEncoding. The HTTP Helper automatically sends the following request
header on Post calls:
content-type: application/x-www-form-urlencoded
Example
The following User Language prompts for a procedure name, stores the procedure in a Stringlist, and uploads the procedure using multipart form encoding.
begin %request is object httpRequest %response is object httpResponse %upfile is object stringlist %procname is string len 255 %rc is fixed %procname = $read('Enter proc name please') %rc = $procopn( %procname ) if ( %rc ) then print 'could not open the proc, dude.' stop end if %upfile = new %upfile:appendOpenProcedure %rc = $proccls %upfile:print %request = new %request:URL = 'whatever' %request:multiPartFormEncoding = true %request:lineEnd = CR %request:addField('filename',%upfile,%procname) %response = %request:post( 'CSOCK' ) print %response:statusline print %response:content end
See also
- For information about Stringlist processing, see "Stringlist class".