NSURLRequest有多个参数

NSURLRequest有多个参数,第1张

创建一个新的数据结构,其中有一个-connection属性和-request ,这样的

@interface connectionWrapper : NSObject

@property(retain) NSURLRequest *request

@property(retain) NSURLConnection *connection

通过在一个可变数组保持这种数据结构,可以区分由连接迭代数组与每个connectionWrapper实例的-connection属性connection对的,如果它们匹配(指向一个对象),那么你就可以检索connectionWrapper实例的-request属性,那么-url NSURLRequest实例的属性。 因为我不是一个母语是英语 CodeGo.net,我认为代码是一个更好的导师。-(NSURLRequest*)getRequestByConnection:(NSURLConnection*)connection

{

for(connectionWrapper *w in theArrayContainingAllConnectionWrappers)

{

if(w == connection)

return w.request

}

}

在-(void)connection:(NSURLConnection*)connection didReceiveResponse(NSURLResponse*)response

{

NSURLRequest *request = [self getRequestByConnection:connection]

NSURL *url = [request url]

/*apply different approach to different url/*

}

PS:这是非常可悲的,NSURLConnection的没有-request属性,这样我们就可以检索与轻松连接关联的请求

2. 这种或那种方式,你将不得不作出2个请求。即使你直接在Web浏览器中打开一个网页时,浏览器会在它下载的HTML引用的CSS文件中一个单独的请求。如果你的应用程序需要HTML和CSS文件,那么你要它做2个独立的URL请求,首先要获取HTML,然后让CSS文件。 现在,只需2个请求需要进行,那并不是你将永远需要编写,使那些2请求的代码。这可能是因为就像那些被@Slee库自动采取的优先个请求的结果,解析出来,并为所有引用的CSS文件的请求。我没有跟他们合作,所以我不知道他们支持,或者如果有图书馆为你做这个。 你可能要考虑的一件事是通过一个UIWebView在加载HTML和CSS,而不是手工处理这一切。 UIWebView中会尝试加载,解析和渲染HTML文件到在这个过程中它会加载引用的CSS和JavaScript文件,并把它们应用到它的渲染。如果你想要做什么特别喜欢拦截来电它使加载CSS文件(S),你可以在UIWebViewDelegate协议并设置了UIWebView中的代表。在该委托就可以了-webView:shouldStartLoadWithRequest:navigationType:

本地文件不可以url直接加参数,可以在uiwebview 加载好后 用js和oc 交互,传递参数。

参考:

NSURL *urlNosmoke = [NSURL URLWithString:[NSString stringWithFormat:@"nosmokeProgram.html"]]

NSString *strFilePath = [self.viewController.commandDelegate pathForResource:[urlNosmoke path]]

NSURL *urlNonSmoking = [NSURL URLWithString:@"?nonSmokingId=2013" relativeToURL:[NSURL URLWithString:strFilePath]]

NSURLRequest *req = [[NSURLRequest alloc] initWithURL:urlNonSmoking

cachePolicy:NSURLRequestUseProtocolCachePolicy

timeoutInterval:20.0f]

[self.viewController.webViewEngine loadRequest:req]

iOS开发网络篇—GET请求和POST请求

一、GET请求和POST请求简单说明

创建GET请求

1 //1.设置请求路径

2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]

3 NSURL *url=[NSURL URLWithString:urlStr]

4

5 //2.创建请求对象

6 NSURLRequest *request=[NSURLRequest requestWithURL:url]

7

8 //3.发送请求

服务器

创建POST请求

1 // 1.设置请求路径

2 NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"]//不需要传递参数

3

4 //2.创建请求对象

5 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL]//默认为get请求

6 request.timeoutInterval=5.0//设置请求超时为5秒

7 request.HTTPMethod=@"POST"//设置请求方法

8

9 //设置请求体

10 NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text]

11 //把拼接后的字符串转换为data,设置请求体

12 request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding]

13

14 //3.发送请求

服务器:

二、比较

建议:提交用户的隐私数据一定要使用POST请求

相对POST请求而言,GET请求的所有参数都直接暴露在URL中,请求的URL一般会记录在服务器的访问日志中,而服务器的访问日志是黑客攻击的重点对象之一

用户的隐私数据如登录密码,银行账号等。

三、使用

1.通过请求头告诉服务器,客户端的类型(可以通过修改,欺骗服务器)

1 // 1.设置请求路径

2 NSURL *URL=[NSURL URLWithString:@"http://192.168.1.53:8080/MJServer/login"]//不需要传递参数

3

4 //2.创建请求对象

5 NSMutableURLRequest *request=[NSMutableURLRequest requestWithURL:URL]//默认为get请求

6 request.timeoutInterval=5.0//设置请求超时为5秒

7 request.HTTPMethod=@"POST"//设置请求方法

8

9 //设置请求体

10 NSString *param=[NSString stringWithFormat:@"username=%@&pwd=%@",self.username.text,self.pwd.text]

11 //把拼接后的字符串转换为data,设置请求体

12 request.HTTPBody=[param dataUsingEncoding:NSUTF8StringEncoding]

13

14 //客户端类型,只能写英文

15 [request setValue:@"ios+android" forHTTPHeaderField:@"User-Agent"]

服务器:

2.加强对中文的处理

问题:URL不允许写中文

在GET请求中,相关代码段打断点以验证。

在字符串的拼接参数中,用户名使用“文顶顶”.

转换成URL之后整个变成了空值。

提示:URL里面不能包含中文。

解决:进行转码

1 //1.设置请求路径

2 NSString *urlStr=[NSString stringWithFormat:@"http://192.168.1.53:8080/MJServer/login?username=%@&pwd=%@",self.username.text,self.pwd.text]

3//转码

4urlStr= [urlStr stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding]

5 NSURL *url=[NSURL URLWithString:urlStr]

6

7 //2.创建请求对象

8 NSURLRequest *request=[NSURLRequest requestWithURL:url]

调试查看:

服务器:


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/bake/11377851.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-15
下一篇2023-05-15

发表评论

登录后才能评论

评论列表(0条)

    保存