0

.NET Web サービスを使用して iOS アプリケーションを開発しています。Web サービスの 1 つで、「 file 」というパラメーターで画像をHttpPostedFileBaseとして送信する必要があります。これにより、画像の URL とステータス パラメーターが応答として返されます。実際、HttpPostedFileBase が何であるかはわかりません。しかし、私はそれをバイトとして送信しようとしています。WS から null として画像 URL を取得しています。WS 呼び出しは正常に機能すると思いますが、問題は画像の送信方法にあります。次のコードを使用して、画像データを HTTP 本文に追加しています。

NSData *imageData = UIImageJPEGRepresentation(image, 1);
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Disposition: form-data; name=\"file\"; filename=\"file.jpeg\"\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[request addValue:@"application/octet-stream" forHTTPHeaderField:@"Content-Type"];
[request addValue:[NSString stringWithFormat:@"%i", [postData length]] forHTTPHeaderField:@"Content-Length"];
[postData appendData:[[NSString stringWithFormat:@"--%@\r--\n",boundary] dataUsingEncoding:NSUTF8StringEncoding]];

どうすればこれを機能させることができるか教えてください。詳細が必要な場合はお知らせください。

ありがとう。

4

2 に答える 2

0

申し訳ありません。問題は HTTP ヘッダーにありました。上記の@FahriAzimovによって投稿されたリンク(ios Upload Image and Text using HTTP POST )が役に立ちました。残念ながら、実際には、.NET Web サービスに別の形式が用意されることに戸惑いました。

通常の Web サービスと同じように、画像を送信する必要がありました。作業コードは以下のとおりです。

NSString *contentType = [NSString stringWithFormat:@"multipart/form-data; boundary=%@",boundary];
[request addValue:contentType forHTTPHeaderField: @"Content-Type"]; 

[postData appendData:[[NSString stringWithFormat:@"--%@\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"Content-Disposition: form-data; name=\"%@\"; filename=\"image.jpg\"\r\n", @"file"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[@"Content-Type: image/jpeg\r\n\r\n" dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:imageData];
[postData appendData:[[NSString stringWithFormat:@"\r\n"] dataUsingEncoding:NSUTF8StringEncoding]];
[postData appendData:[[NSString stringWithFormat:@"--%@--\r\n", boundary] dataUsingEncoding:NSUTF8StringEncoding]];

みんなの助けに感謝します。

于 2013-08-27T06:22:01.577 に答える
-1

ASIHTTPRequest libraray を使用してください。非常に優れています。画像を添付ファイルとして .net サーバーに送信できます。... http://allseeing-i.com/ASIHTTPRequest/How-to-use

here is sample code

ASIFormDataRequest *request = [ASIFormDataRequest requestWithURL:url];

// Upload a file on disk
[request setFile:@"/Users/ben/Desktop/ben.jpg" withFileName:@"myphoto.jpg" andContentType:@"image/jpeg"
forKey:@"photo"];

// Upload an NSData instance
[request setData:imageData withFileName:@"myphoto.jpg" andContentType:@"image/jpeg" forKey:@"photo"];
于 2013-08-26T11:11:23.877 に答える