主要内容

发送和接收HTTP消息

这个例子展示了如何发送一个请求到服务器,包括重定向和可能需要摘要式身份验证。

sendRequest函数自动重定向和第一个请求进行身份验证。对于后续的请求,您不想支付重定向的成本。要做到这一点,sendRequest保存cookie收到先前的请求和重用他们后续的请求。

sendRequest说明的使用历史,一个自定义的重用HTTPOptions对象来改变默认的超时,保存凭证的使用。

这个例子并没有说明一个健壮的、通用的机制来实现这些结果。特别是,sendRequest返回所有饼干从主机接收主机在每个后续消息,不管域,路径,过期或其他属性。sendRequest也不保存在MATLAB凭证或饼干®会话。尽管如此,sendRequest对于许多应用程序来说是足够的。

创建sendRequest从下面的代码功能。

函数响应= sendRequest (uri,请求)% uri: matlab.net.URI%的要求:matlab.net.http.RequestMessage%的回应:matlab.net.http.ResponseMessage% matlab.net.http.HTTPOptions跨请求重用以前的持续存在%为后续的认证证书持续的选项%信息是一个容器。映射对象所在:% uri.Host是关键;%值是“信息”结构包含:%饼干:向量matlab.net.http.Cookie或空的% uri:目标matlab.net.URI如果重定向,或空的持续的信息如果isempty(选项)选项= matlab.net.http.HTTPOptions (“ConnectTimeout”,20);结束如果isempty(信息)信息= containers.Map;结束主机=字符串(uri.Host);%从URI获取主机试一试%得到主机信息结构的地图信息=信息(主机);如果~ isempty (info.uri)%如果它有一个uri字段,它意味着一个重定向%,所以取代与重定向请求URI URI。uri = info.uri;结束如果~ isempty (info.cookies)%如果它有饼干,这意味着我们之前收到这个主机的饼干。%添加饼干头字段包含所有。请求= request.addFields (matlab.net.http.field.CookieField (info.cookies));结束%为该主机没有以前的重定向或饼干信息= [];结束%发送请求和响应和事务的历史。(反应、~、历史)=请求。发送(uri,选项);如果响应。StatusCode ~ = matlab.net.http.StatusCode.OK返回结束% set - cookie的响应消息头字段%每个历史记录和保存他们的地图。arrayfun (@addCookies、历史)%如果不同于历史上最后一个URI URI发送原始%的请求,那么这是一个重定向。保存新目标URI的主机信息结构。targetURI =(结束).URI历史;如果~ isequal (targetURI uri)如果isempty(信息)%在地图没有以前这个主机的信息,创建新的信息(char(主机))=结构(“饼干”[],“uri”,targetURI);其他的变化百分比URI信息为该主机和放回地图信息。uri = targetURI;信息(char(主机))=信息;结束结束函数addCookies(记录)%添加饼干在响应消息历史记录%为主机映射条目请求指示。%ahost = record.URI.Host;%主机请求被送到cookieFields = record.Response.getFields (“set - cookie”);如果isempty (cookieFields)返回结束cookieData = cookieFields.convert ();%得到数组的set - cookie的结构饼干= [cookieData.Cookie];%得到饼干的结构体数组试一试%如果信息对于这个主人已经在地图上,加上它的饼干。ainfo =信息(ahost);ainfo。饼干= [ainfo。曲奇饼干];信息(char (ahost)) = ainfo;%没有地图,所以添加新信息结构。信息(char (ahost)) =结构(“饼干”、饼干、“uri”[]);结束结束结束

调用的函数。

请求= matlab.net.http.RequestMessage;uri = matlab.net.URI (“//www.tatmou.com/下载188bet金宝搏products”);响应= sendRequest (uri,请求)
响应= ResponseMessage属性:状态栏:“HTTP / 1.1 200 OK”StatusCode:好的标题:[1×11 matlab.net.http.HeaderField]身体:[1×1 matlab.net.http.MessageBody]完成:0

你的响应值可能不同。

另请参阅

||||||