美文网首页
webView开发遇到的问题

webView开发遇到的问题

作者: kodbin | 来源:发表于2017-05-16 14:18 被阅读33次

1.怎么创建post的web请求

我们平常都是比较熟悉get方式的请求方式,post用的比较少,但是在类似支付页面的调用上回用到,用法如下

使用场景:url为基本url,dic为多个参数要post的参数,for中为了拼接body体

NSURL *url = [NSURL URLWithString:self.webURL];

NSString *bodyStr = @"";

for (NSString *keyStr in self.dic) {

NSString *andStr = bodyStr.length < 1?@"":@"&";

NSString *aaa = self.dic[keyStr];

NSString *iiii = [aaa URLEncodedString];//转为URL字符

bodyStr = [bodyStr stringByAppendingString:[NSString stringWithFormat:@"%@%@=%@",andStr,keyStr,iiii]];

}

NSMutableURLRequest *request = [[NSMutableURLRequest alloc]initWithURL: url];

[request setHTTPMethod:@"POST"];

[request setHTTPBody: [bodyStr dataUsingEncoding: NSUTF8StringEncoding]];

[_webV loadRequest: request];

2.iOS中URL特殊字符的转换问题

上述中 代码:NSString *iiii = [aaa URLEncodedString];//转为URL字符

//转换为URL编码

- (NSString *)URLEncodedString

{

// CharactersToBeEscaped = @":/?&=;+!@#$()~',*";

// CharactersToLeaveUnescaped = @"[].";

NSString *unencodedString = self;

NSString *encodedString = (NSString *)

CFBridgingRelease(CFURLCreateStringByAddingPercentEscapes(kCFAllocatorDefault,

(CFStringRef)unencodedString,

NULL,

(CFStringRef)@"!*'();:@&=+$,/?%#[]",

kCFStringEncodingUTF8));

return encodedString;

}

//还原

-(NSString *)URLDecodedString

{

//NSString *decodedString = [encodedString stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding ];

NSString *encodedString = self;

NSString *decodedString  = (__bridge_transfer NSString *)CFURLCreateStringByReplacingPercentEscapesUsingEncoding(NULL,

(__bridge CFStringRef)encodedString,

CFSTR(""),

CFStringConvertNSStringEncodingToEncoding(NSUTF8StringEncoding));

return decodedString;

}

上述方法是为了转换特殊字符的问题,但是已经警告不要用了,并提供了代替方法stringByAddingPercentEncodingWithAllowedCharacters,该方法的用法是:

NSString *iiii = [aaa stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLHostAllowedCharacterSet]];

但是使用中又发现"+""="等(其他待补充)url中的字符没有转换过来,找了很多方式没找到更好的解决方式,只能使用如下比较笨的方式

iiii = [iiii stringByReplacingOccurrencesOfString:@"+" withString:@"%2B"];

iiii = [iiii stringByReplacingOccurrencesOfString:@"=" withString:@"%3D"];

3.web页面打开空白的解决方法

遇到一些支付页面由于需要允许证书接收,所以会一直空白,并且控制台输出

CFStreamErrorDomainSSL, -9813

解决方法:在appdelegate.m中,@end后面加上

@implementation NSURLRequest(DataController)

+ (BOOL)allowsAnyHTTPSCertificateForHost:(NSString *)host

{

return YES;

}

相关文章

  • webView开发遇到的问题

    1.怎么创建post的web请求 我们平常都是比较熟悉get方式的请求方式,post用的比较少,但是在类似支付页面...

  • WebView 遇到的问题

    WebView 遇到的问题 总结一些在开发中遇到的问题, 上一篇中也有部分描述: WebView 的反思和记录 ...

  • Android Webview的一些坑

    Android Webview的一些坑 前言 Webview在开发中,总会遇到各种兼容,崩溃,支持各种功能的问题。...

  • WebView开发遇到的问题总结

    创建:WebView创建不在布局文件中定义,在java代码中定义,add进布局容器 问题 1:白屏和闪屏,原因:硬...

  • iOS开发JS调用OC

    在开发中时常会用到webView,当用到webView加载页面的时候,对于开发方便了很多,但是也会遇到一个问题:w...

  • Kotlin - 处理Android-WebView文件上传的工

    最近开发上遇到需要处理WebView进行文件上传的问题,但是由于原生的WebView并不支持文件上传,只能我们重写...

  • 关于WebView的使用-基本使用

    WebView问题系列: 1. 遇到的问题-基本使用 2.遇到的问题- All WebView methods m...

  • 关于WebView的使用-线程

    WebView问题系列: 1.遇到的问题-基本使用2.遇到的问题- All WebView methods mus...

  • WebView遇到的问题

    1.场景说明:进行芝麻认证:通过webview打开支付宝提供的H5,传入姓名和身份证号码进行认证,认证成功后,在回...

  • WebView 遇到的问题

    onPageStarted() 被调用多次问题: 因为网址的加载过程中存在重定向问题,所以会被调用多次。 这个是不...

网友评论

      本文标题:webView开发遇到的问题

      本文链接:https://www.haomeiwen.com/subject/cmdlxxtx.html