1

我正在尝试在 iPhone 上使用 HTTP POST 将请求传递给 URL。HTTP 正文包含一些转义字符。

NSString *requestMessage=[NSString stringWithString:@"?username/u001password/u001description"];
    NSMutableURLRequest *url=[NSMutableURLRequest requestWithURL:[NSURL URLWithString:@"http://welcome.com"]];
    [url setHTTPMethod:@"POST"];
    [url setHTTPBody:[requestMessage dataUsingEncoding:NSUTF8StringEncoding]];
     NSURLConnection *theConnection=[[NSURLConnection alloc] initWithRequest:url delegate:self];

这里的转义字符是/u001.

使用此代码我没有得到任何正确的响应。我认为问题仅在于转义字符。请给我一个解决方案,了解如何在 Cocoa 中提供这样的转义序列。提前致谢。

4

2 回答 2

2

您将正斜杠 (/) 与反斜杠 (\) 混淆了。你需要一个反斜杠来形成一个转义序列;斜线只是一个斜线,“/u001”只是一个斜线,字母 u,两个数字零和一个数字 1。

也就是说,如果你真的想在你的字符串中包含 U+0001,即使\u001是错误的。你想要\x01或者也许\u0001(但我似乎记得如果你使用\u低于 U+0100 的字符,GCC 会抱怨)。

不过,我确实想知道为什么服务器需要 U+0001 作为分隔符。对于您查询的任何服务器,是否有公共 API 文档?

于 2010-08-23T10:18:37.873 回答
0

你想逃避什么?我不太明白你想做什么。你想写“&”吗?然后去做。它不是 HTML。

除此之外,[NSString stringWithString:@"…constant string…"]是超流体。@"…constant string…"是你所需要的全部。

NSString 中有一个方法可以将百分比转义添加到 URL -(void)stringByAddingPercentEscapesUsingEncoding::. 也许这就是你要找的?

于 2010-08-23T10:05:25.267 回答