0

接続エラー Domain=NSURLErrorDomain Code=-1002 "unsupported URL" UserInfo=0x6a3f420 {NSErrorFailingURLStringKey=http%3A%2F%2F10.101.189.65%3A8090%2Fbusinessservice.svc, NSErrorFailingURLKey=http%3A%2F%2F10.101.189 .65%3A8090%2Fbusinessservice.svc, NSLocalizedDescription=サポートされていない URL, NSUnderlyingError=0x6a3f450 "サポートされていない URL"}

サーバーにアクセスすると、このエラーが発生します。

didfailwithError を直接呼び出します。-(void)接続:(NSURLConnection *)接続didFailWithError:(NSError *)エラー{

NSLog(@"Error with connection %@",error);

}

このエラーがいつ呼び出されるかを知ることができます!

soapenvelope を作成し、メソッド名で soap リクエストを呼び出します。URLをエンコードしてdot.net Webサーバーに送信します

NSString *soapMessage = [self getTestSoapEnvelope];
NSLog(@"soapMessage %@",soapMessage);

NSString *urlString = @"http://systemName:8090/businessservice.svc";
NSString *encodeUrl = (__bridge_transfer NSString *)
CFURLCreateStringByAddingPercentEscapes(NULL,
                                    (__bridge_retained CFStringRef)urlString,
                                    NULL,
                                    (CFStringRef)@"!*'();:@&=+$,/?%#[]",
                                    kCFStringEncodingUTF8);

NSURL *url = [NSURL URLWithString:encodeUrl];    
NSString *msgLength = [NSString stringWithFormat:@"%d", [soapMessage length]];

NSMutableURLRequest *theRequest = [NSMutableURLRequest requestWithURL:url];

[theRequest addValue: @"text/xml; charset=utf-8" forHTTPHeaderField:@"Content-Type"];
[theRequest addValue: @"ManageCase" forHTTPHeaderField:@"SOAPAction"];
[theRequest addValue: msgLength forHTTPHeaderField:@"Content-Length"];
[theRequest setHTTPMethod:@"GET"];
    [theRequest setHTTPBody: [soapMessage dataUsingEncoding:NSUTF8StringEncoding]];


    theConnection = [[NSURLConnection alloc] initWithRequest:theRequest delegate:self];

    if( theConnection )
    {
        webData = [NSMutableData data];
    }
    else
    {
        NSLog(@"theConnection is NULL");
    }

リクエスト時間はGETです

サーバーにアクセスできません。この問題について誰かアドバイスをください。

@前もって感謝します

4

1 に答える 1

0

問題は、完全な URL をエンコードしていることです。

NSString *urlString = @"http://systemName:8090/businessservice.svc";
NSString *encodeUrl = (__bridge_transfer NSString *)
CFURLCreateStringByAddingPercentEscapes(NULL, ...

最後の URI 部分 (引数などを含む部分) のみをエンコードする必要があります。

あなたの場合、次のような部分がないため、実際に URL をエンコードする必要はありません。

@"?param=1&url=newsite.com&title=Post title";

に渡すだけurlStringですURWithString

NSString *urlString = @"http://systemName:8090/businessservice.svc";
NSURL *url = [NSURL URLWithString:urlString];    
于 2012-07-30T15:17:18.807 に答える