2

したがって、私がやりたいことは、POST リクエストを URL に送信することだけです。今、私は NSURLRequest/NSURLConnection を使用してみましたが、それに問題があり、大きなファイルを送信したいので、ストリームを直接処理する方がよいと考えたため、下位レベルに移動することにしました。しかし、出力ストリーム デリゲートは呼び出されていないようで、NSOutputStream のinitWithURL.

NSURL *url = [NSURL URLWithString:NSString stringWithFormat: @"http://url"];
self.outputStream = [[NSOutputStream alloc] initWithURL:url append:NO];
[outputStream retain];
[outputStream setDelegate:self];
[outputStream scheduleInRunLoop:[NSRunLoop currentRunLoop] forMode:NSDefaultRunLoopMode];
[outputStream open];

私のURLは有効なURLであるため、理解できません。端末からpingを実行して、他のソースからデータを送信できます。私は何か間違ったことをしていますか、またはストリームを使用して URL に POST 要求を書き込む方法を教えてもらえますか? ありがとう。

4

2 に答える 2

3

You cannot use NSOutputStream to send a POST request to a HTTP server.

The good method is to create a NSMutableURLRequest and provide that request with a HTTPBodyStream then create a NSURLConnection to send the request.

The HTTPBodyStream is an NSInputStream the request will read the body from. You may initialize it with a NSData object or with the contents of a file.

If you want to provide a custom content (for example, you want to upload a file as part of a multipart/form-data request), you may need to subclass NSInputStream. In such case, I suggest you to have a look at How to implement CoreFoundation toll-free bridged NSInputStream subclass, which explains how to address an issue that occurs when using custom input streams with NSURLConnection. Or you may use ASIHTTPRequest which provides multipart HTTP requests out of the box.

于 2012-06-26T14:36:18.247 に答える