- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在我的 iPhone 应用程序中执行 HTTP Post,我发送到服务器的参数之一是 URL。问题是,当我从 NSURL 转换为 NSURLRequest 时,字符串 http://www.slashdot.org变为 http://www.slashdot.org(缺少一个正斜杠)
有办法解决这个问题吗?
这是我使用的代码:
NSString *host = @"example.host.com";
NSString *urlString = [NSString stringWithFormat:@"/SetLeaderUrl.json?leader_email=%@&url=%@",localEmail,urlToPublish];
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString];
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
NSData *returnData = [NSURLConnection sendSynchronousRequest:request returningResponse:nil error:nil];
NSString *jsonString = [[NSString alloc] initWithData:returnData encoding:NSUTF8StringEncoding];
我已经使用 NSLog 查看它丢失“/”的位置,它在第四行:
NSURLRequest *request = [[NSURLRequest alloc] initWithURL:url];
感谢您花时间阅读!
最佳答案
在将查询值替换为字符串之前,您没有对查询值进行百分比转义。我刚刚做了一个小测试,发现如果我将 urlToPublish
设置为“http://example.com”,那么 NSURL
会将其转换为“http:/example.com”。
这是因为查询值包含特殊字符,这意味着您需要添加百分比转义。至少你可以使用普通的 -[NSString stringByAddingPercentEscapesUsingEncoding:]
和 NSASCIIStringEncoding
。更好的方法是使用不同的(并且更完整的)转义机制,例如我建议的转义机制 in this post .
在这种情况下,stringByAddingPercentEscapesUsingEncoding:
不起作用,因为这是一个非常糟糕的方法。它适用于包容性 模型,这意味着您必须告诉它您想要对哪些字符进行百分比编码。 (在幕后,它只是在调用 CFURLCreateStringByAddingPercentEscapes()
)这个函数基本上要求您提供一个字符串,该字符串表示允许它进行百分比编码的每个字符(据我了解该函数)。你真正想要的是一个排他性模型:除了[这一小部分字符]之外的所有内容。我上面链接的函数就是这样做的,你可以像这样使用它:
NSString *urlToPublish = [@"http://stackoverflow.com" URLEscapedString_ch];
NSString *host = @"example.host.com";
NSString *urlString = [NSString stringWithFormat:@"/SetLeaderUrl.json?leader_email=%@&url=%@",localEmail,urlToPublish];
NSURL *url = [[NSURL alloc] initWithScheme:@"http" host:host path:urlString];
然后它将正确构建您的 URL。
这是您可以执行此操作的另一种方法(并且正确地)。转到 my github page并下载“DDURLBuilder.h”和“DDURLBuilder.m”,然后像这样构建您的 URL:
NSString *localEmail = @"foo@example.com";
NSString *urlToPublish = @"http://stackoverflow.com"
DDURLBuilder *b = [DDURLBuilder URLBuilderWithURL:nil];
[b setScheme:@"http"];
[b setHost:@"example.host.com"];
[b setPath:@"SetLeaderUrl.json"];
[b addQueryValue:localEmail forKey:@"leader_email"];
[b addQueryValue:urlToPublish forKey:@"url"];
NSURL *url = [b URL];
关于iphone - 从 NSURL 转换为 NSURLRequest 时丢失 a/,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5412431/
方法 -isFileReferenceURL 是在 NSURL 类上定义的,但我不知道这个方法是什么。我认为这决定了 URL 是否指向实际文件,但事实并非如此。即使文件存在,它也会返回NO。手册上说只
给定一个本地 URL 地址,例如 index.html 现在我需要使用UIWebView在iPad中加载它。我按照以下步骤操作: 创建 NSURL NSURL *url = [NSURL fileUR
我正在尝试将 NSString(文档目录中文件的路径)转换为 NSURL,但 NSURL 始终为空。这是我的代码: NSURL *urlToPDF = [NSURL URLWithString:app
我有一个将属性定义为 NSURL 的对象: @interface fcpElement : NSObject @property (copy) NSString* elementName; @prop
我正在尝试使用 swift 和 firebase 构建聊天应用程序并收到此错误:下面是代码:我仍然不明白哪里出了问题!!我也在使用 JSQMessageViewController。 func sen
我尝试将 deviceToken 附加到 webView loadRequest 之前的 URL,以便我可以使用 GET 值PHP 脚本。我的问题是,保存 deviceToken 值的函数 didFa
我有 2 个 [NSURL] 数组,它们具有相同的元素,但顺序不同。我正在尝试使用 array1 的索引路径来获取成员,并在另一个数组中检测成员的索引路径。 我不知道我是否可以检测到成员在 NSURL
我有一个文件(假设是一个 PDF)存储在我的 macOS Cocoa 应用程序的磁盘上。我有包含此文件路径的 NSURL。 我目前正在使用 NSView 向用户显示此文件存在,其中包含一个显示文件名的
我为 Swift 2 升级了我的代码,这里出现错误: 无法使用 (fileURLWithPath: NSURL) 类型的参数列表调用类型 NSURL 的初始化程序 代码如下: let dirP
我正在尝试将 NSURL * _Nullable 转换为不可为空。你们有没有人知道我该怎么做? 这里是一些上下文: 我正在尝试使用 ios-oauthconsumer ,我正在尝试初始化一些对象: s
我最近在比较两个 NSURL 并将一个 NSURL 与 NSString(这是一个 URL 地址)进行比较时遇到了一个问题,情况是我从某个地方得到了一个 NSURLRequest,我可能知道也可能不知
我必须解析一个 JSON API 的返回,我已将 URL 转换为一个字符串,然后我将它传递给 NSURL,但在 NSLog 中它显示为 nil。这是我的代码, NSString *urlstring=
我有一个名为 downloadedPhotoURLs 的变量,其类型为 [NSURL]?。 我正在尝试分配返回类型 [NSURL] 的函数的结果(非可选)。 我在分配时解开变量downloadedPh
我有一个网址 http://www.hdwallpapers.in/walls/honda_v4_concept_widescreen_bike-wide.jpg 我要提取的文件名为“honda_v4
我有一个 NSURL: 服务器调用?x=a&y=b&z=c 获取 y 值最快、最有效的方法是什么? 谢谢 最佳答案 更新: 自 2010 年撰写本文以来,Apple 似乎已经为此目的发布了一套工具。请
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
-[NSURL startAccessingSecurityScopedResource] 状态的文档: You must balance every call to the startAccessi
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我在 SO 上看到了很多关于 NSURL 和 NSString 之间转换的问题。它们都涉及使用 NSString *path = [myURL AbsoluteString]; 或 NSString
我是一名优秀的程序员,十分优秀!