2

NSStreamクラスを使用して入力/出力ストリームソケットを作成する方法を知っています。TCP接続とSSL接続もできました。HTTP_PROXYしかし、サーバーへのストリームソケット接続を確立する方法がわかりません。サーバーは、ユーザー名/パスワードも送信する必要があります。

NSStreamこれはAPIを使用して可能ですか?

4

1 に答える 1

0

私のように立ち往生している人のために。これが私がそれを解決した方法です。

  • CFStreamCreatePairWithSocketToHostではなくCFReadStreamCreateForHTTPRequestを使用します。
  • 正しいプロキシキーを使用してください-kCFStreamPropertyHTTPProxyHostおよび kCFStreamPropertyHTTPProxyPort

       CFHTTPMessageRef    request;
    
       request = CFHTTPMessageCreateRequest(
           NULL, 
           CFSTR("GET"), 
           (__bridge CFURLRef) [NSURL URLWithString:@"http://www.apple.com/"], 
           kCFHTTPVersion1_1
       );
       assert(request != NULL);
    
       self.inputStream = CFBridgingRelease( 
           CFReadStreamCreateForHTTPRequest(NULL, request)
       );
    
       CFRelease(request);
    
       if (YES) {
           BOOL            success;
           NSDictionary *  proxyDict;
    
           proxyDict = @{
               (__bridge NSString *) kCFStreamPropertyHTTPProxyHost: @"proxy.example.com",
               (__bridge NSString *) kCFStreamPropertyHTTPProxyPort: @12345,
           };
    
           success = [self.inputStream setProperty:proxyDict 
               forKey:(__bridge NSString *) kCFStreamPropertyHTTPProxy
           ];
           assert(success);
       }
    
       [self.inputStream setDelegate:self];
       [self.inputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] 
           forMode:NSDefaultRunLoopMode
       ];
       [self.inputStream open];
    
于 2014-08-16T14:42:18.657 に答える