首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当传递带有非ascii字符的主机名的HTTP url时,NSURL返回nil

当传递带有非ASCII字符的主机名的HTTP URL时,NSURL返回nil的原因是NSURL类在处理URL时,要求主机名部分必须是ASCII字符。如果主机名包含非ASCII字符,NSURL会返回nil,表示URL无效。

为了解决这个问题,可以使用NSURL的初始化方法initWithString:来创建URL对象,并将包含非ASCII字符的主机名进行URL编码。URL编码可以使用NSString的stringByAddingPercentEncodingWithAllowedCharacters:方法来实现。该方法接受一个NSCharacterSet对象作为参数,指定了允许的字符集合。常见的字符集合可以使用NSCharacterSet的URLHostAllowedCharacterSet方法获取。

以下是一个示例代码,演示如何处理带有非ASCII字符的主机名的HTTP URL:

代码语言:swift
复制
// 导入Foundation框架
import Foundation

// 原始URL字符串
let urlString = "http://www.例子.com"

// 对主机名进行URL编码
let encodedHost = urlString.host?.addingPercentEncoding(withAllowedCharacters: .urlHostAllowed)

// 构建完整的URL字符串
let encodedUrlString = urlString.replacingOccurrences(of: urlString.host ?? "", with: encodedHost ?? "")

// 创建NSURL对象
if let url = URL(string: encodedUrlString) {
    // 使用NSURL对象进行后续操作
    // ...
} else {
    // URL无效,处理错误情况
    // ...
}

在上述示例代码中,首先使用URL字符串的host属性获取主机名部分,然后使用addingPercentEncoding(withAllowedCharacters:)方法对主机名进行URL编码。接下来,使用replacingOccurrences(of:with:)方法将原始URL字符串中的主机名替换为编码后的主机名,得到完整的编码后的URL字符串。最后,使用URL的初始化方法URL(string:)创建NSURL对象,并进行后续操作。

对于腾讯云相关产品和产品介绍链接地址,由于要求不能提及具体的云计算品牌商,无法给出具体的推荐。但是,腾讯云作为一家知名的云计算服务提供商,提供了丰富的云计算产品和解决方案,可以根据具体需求选择适合的产品。可以参考腾讯云的官方网站(https://cloud.tencent.com/)获取更多信息。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

AFNetworking 源码阅读(v3.2.1)

http编码格式,即url?...Block中传入一个request,编码参数parameters和一个error,返回请求参数编码成一个查询字符串 - (void)setQueryStringSerializationWithBlock...block赋值个代理,再将代理和任务存储到属性mutableTaskDelegatesKeyedByTaskIdentifier中,这样就使得每一个task都有它自己代理,task回调,我们通过它找到...,完成后即进行回调,还有一个好处是,任务完成,就可以移除代理,这样可以打破block循环引用,所以我们再AFblock中直接在self不会造成循环引用 下面在看一下SSL相关类AFSecurityPolicy...,completionGroup属性为nil,默认就使用它 static dispatch_group_t url_session_manager_completion_group() {

2.1K20
  • WKWebView详解

    - (WKNavigation *)loadFileURL:(NSURL *)URL allowingReadAccessToURL:(NSURL *)readAccessURL; URL是文件URL...URL Scheme URL Scheme对大小写敏感 一个合法URL Scheme只能是以ASCII字母开头并且只能是由ASCII字母,数字,'+', '-' 和 '.'...)defaultStore; 在url路径文件路径下创建一个Store并返回 + (instancetype)storeWithURL:(NSURL *)url; 创建,Store内容从该路径下所有编译过规则列表加载...返回nil则使用默认预览表现 如果返回一个视图控制器则预览会显示这个视图控制器,并且在用户触发pop操作(继续按压)触发webView:commitPreviewingViewController:...网页URL @property(readonly, copy) NSURL *URL; 创建记录初始化传入URL @property(readonly, copy) NSURL *initialURL

    20.6K193

    OC知识--Foundation框架详尽总结之『字符串类』

    URL就能找到唯一一个资源 URL格式 基本URL包含协议、主机域名(服务器名称\IP地址)、路径 举例: http://www.jianshu.com/img/Walkers.gif 可以简单认为...:本地电脑文件 URL创建 传入完整字符串创建 NSURL *url = [NSURL URLWithString:@"file:///Users/Walkers/Desktop/str.txt...使用NSURL读写字符串 从URL中读取 // 用来保存错误信息 NSError *error = nil; // 创建URL路径 NSURL *url = [NSURL fileURLWithPath...*)string; 比较方法: 逐个字符地进行比较ASCII值,返回NSComparisonResult作为比较结果 NSComparisonResult是一个枚举,有3个值: 如果左侧 >...获取字符每个字符 返回字符长度(有多少个文字)- (NSUInteger)length; 返回index位置对应字符- (unichar)characterAtIndex:(NSUInteger

    63120

    URL Scheme

    该文件显示在右边窗口,在列表上点击鼠标右键,选择 Add Row: 向下滚动弹出列表并选择 URL types。...该字符串是你自定义 URL scheme 名字。建议采用反转域名方法保证该名字唯一性,比如 com.yourCompany.yourApp。...在这之前,我创建了一个准 UI 以辨别带有自定义 URL 应用。该应用只有一个 UILabel,带有文本 “App With Custom URL”( 下载源代码)。 ...:(NSURL *)url    sourceApplication:(NSString *)sourceApplication    annotation:(id)annotation  从一个应用传递参数到另一个诀窍是通过...return NO;  }  有一点要特别注意,你不能阻止其他应用通过自定义 URL scheme 调用你应用,然而你可以跳过后续操作并返回 NO,就像上面的代码那样。

    1.2K10

    AFNetworking框架分析(二)——AFURLSessionManager(上)

    ,只需要传入访问服务器URL以及参数,就可以通过block返回给对应正确或者错误数据,而且还可以通过progressblock不断获取进度。...关于AFHTTPRequestSerializerObservedKeyPaths(),查看实现方法可以发现返回一个带有方法名数组,定义了一个static方法,表示该方法只能在本文件中使用。...它作用就是上面我们说,以key=value形式,然后用URL Encode编码,拼接成字符串。...例如,之前项目中需要向后台传输一段用户定位数据用于分析行动轨迹,传参字典中locationkey值嵌套了一个包含分别以经度和纬度为key字典。 ?...递归确保所有的value最终全部转换成字符串形式 value为字典、数组、集合类型,会执行递归解析,直到value类型都不为上述类型,向mutableQueryStringComponents

    1.9K40

    小记React Native与原生通信(iOS端)

    一、原生与RN通信 先做点准备工作叭~ 通过react-native init创建一个RN新项目,此后将会得到一个内部带有ios和android目录文件夹。把这两个目录下文件换成自己项目。...它作用是自动注册一个Module,原生桥加载之时,这个Module可以在JavaScript Bridge中调用。...引入原生module类,并调用返回原生界面的方法。...- (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary<UIApplicationOpenURLOptionsKey...AFN弹出提示:“未能找到使用指定主机名服务器”。也就是说RN并未调起js server。 确保mac和手机连是同一网络之后,去xCode中搜索域名.xip.io。发现并没有这个文件。

    6.3K10

    认识 URL 及其编码

    分隔实际 URL 和参数 %3F # 表示书签 %23 + 表示空格 + % 指定特殊字符 % 以上字符在不表示其特殊含义,出现在 HTTP(S) URL 中均需要对其编码。...对 URL 进行编码主要原因有如下几点: ASCII 无法表示字符 URL 只使用 ASCII 编码字符集中可打印字符来编写,因此不可打印字符以及 ASCII 之外字符如果出现在 URL 中,...比如空字符是不安全,因为 URL 被排版或接受文字处理程序处理,重要空格可能会消失,也可能会引入无关紧要空格。字符 是不安全,因为它们被用作自由文本中 URL 周围分隔符。...比如字符; / ? : @ = &是方案中可能保留具有特殊含义字符。 因此只有字母和数字[0-9a-zA-Z]、具有特殊含义保留字符以及保留字符,才可以不经过编码直接用于 URL。...除了上面保留字符,其他任何字符出现在 URL 不同部分时,如果与该部分保留字符发生冲突或不可打印或超出 ASCII 表示范围,均需要对其编码。

    2.6K51

    H7-TOOLLUA小程序教程第2期:变量,循环,函数,条件语句和字符串相关API

    2个参数,返回2个值得和 function add(num1, num2) return num1 + num2 end --把函数赋值给一个变量,然后可以参数传递 local myprint...local name,url = what() print(name,url) 六、常用字符串函数: string.byte(s [, i [, j]]) string.byte是用来把字符转换成...ascii数字,s为目标字符串,i为索引开始位置(从1开始),j为索引结束位置 例子 --默认为第1个返回aascii值 local r = string.byte('abcdefg') --97...string.char是把ascii数值转换成字符 例子 --返回98所对应字符 local r = string.char(98) --a --返回98,,99,100对应字符并连在一起返回 local...(%a+).com') string.gsub (s, pattern, repl [, n]) 用来做字符串替换,可选参数n代表替换多少次默认全部替换,返回替换后字符串,也可以指定第二个返回值为替换次数

    1.1K30

    iOS 自己封装网络请求,json解析

    基本上所有的APP都会涉及网络这块,不管是用AFNetWorking还是自己写http请求,整个网络框架搭建很重要。...楼主封装网络请求类,包括自己写http请求和AFNetWorking请求,代码简单,主要是框架搭建。简单来说,就是一个请求类,一个解析类,还有若干数据类。...以下代码以公开天气查询api为例: 1.网络请求类 我把常用网络请求方法都封装好了,你只需要写自己接口,传递apiName,params等参数就可以。...:%@",pathStr); NSURL *url = [NSURL URLWithString:pathStr]; NSMutableURLRequest *request...,我们采用第三方get请求,具体情况选择不同请求方式,都是异步请求 [self getddByUrlPath:@"http://m.weather.com.cn/data/101190101

    1.7K90
    领券