3

私はこの非常に単純なコードを持っています:

PO(URLString);
url = [NSURL URLWithString:URLString];
PO(url);
NSData * data=[NSData dataWithContentsOfURL:url];

PO()ものを印刷するための私のマクロです。)

ほとんどの場合機能します。出力は次のとおりです。

2012-10-08 11:39:28.187 BadgerNew[2475:5007] <0x1f5321f0 BGCRBusinessForDisplay.m:(113)> URLString: http://id.openrice.com/UserPhoto/photo/0/U/0005Z29E131A230CBA4A42n.jpg

2012-10-08 11:39:28.193 BadgerNew[2475:5007] <0x1f5321f0 BGCRBusinessForDisplay.m:(115)> url: http://id.openrice.com/UserPhoto/photo/0/U/0005Z29E131A230CBA4A42n.jpg

2012-10-08 11:39:30.191 BadgerNew[2475:6b03] <0x1f529f00 BGCRBusinessForDisplay.m:(113)> URLString: http://maps.googleapis.com/maps/api/staticmap?&zoom=16&size=160x160&maptype=roadmap&sensor=true&center=-6.187900,106.775429&markers=size:small|color:blue|-6.187900,106.775429

2012-10-08 11:39:30.196 BadgerNew[2475:6b03] <0x1f529f00 BGCRBusinessForDisplay.m:(115)> url: (null)

ご覧のとおり、http://id.openrice.com/UserPhoto/photo/0/U/0005Z29E131A230CBA4A42n.jpgでは正常に機能し、http://maps.googleapis.com/maps/api/staticmap &zoomでは失敗します。 = 16&size = 160x160&maptype = roadmap&sensor = true&center = -6.187900,106.775429&markers = size:small | color:blue | -6.187900,106.775429

おそらく問題は| GoogleのURLで。だから私はそれで何をすべきですか?

4

2 に答える 2

6

そうです、|(「パイプ」)が問題です。

関連する外部ドキュメントは RFC 2396および1738であると言うためのApple ドキュメントURLWithString:。彼らによると、は「安全でない」文字であり、常に URL でエンコードする必要があります。そのエンコーディングは.|%7C

文字列内のパイプを手動で修正できますが (ハードコードされた文字列の場合) -[NSString stringByAddingPercentEscapesUsingEncoding:]、.

于 2012-10-08T04:55:57.720 に答える
0

私は自分の解決策を見つけました。

ヤップ | が問題です。

私もです:

    URLString = URLString.UTF8Encode;

UTF8Encode は次のように定義されています。

- (NSString *)UTF8Encode
{
    NSString* encodedstring = [self stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    return encodedstring;
}

はい、それはカテゴリです:D

于 2012-10-08T04:55:41.687 に答える