2017-03-08 9 views
0

サードパーティのAPIを呼び出しています。ここでは、サードパーティのAPI情報だと、彼らは何を期待:マルチパートフォームデータのポストリクエストでのカール相当

POST /api/ HTTP/1.1 
Host: testurl.com 
Content-Type: multipart/form-data 

curl https://testurl.com/api \ 
    -H "Content-Type: multipart/form-data" \ 
    -F "document[description]=meeting notes" \ 
    -F "document[matter][id]=123" \ 
    -F "document[document_category][name]=Offers" \ 
    -F "document_version[last_modified_at]=2013-12-03T23:35:32+00:00" \ 
    -F "document_version[uploaded_data][email protected]" 

は、私はこれらの情報を送信するためにC#の同等のPOSTメソッドを記述する必要があります。私はカールコールでヘッダーを処理しましたが、残りのフォームデータについてはわかりません。例えば、 "document"と "document_version"は、それぞれの属性(またはそれらが何であれ)と共に、どのようにそれらの情報を渡すのですか?

は、ここで私が見つけたものです:http://www.briangrinstead.com/blog/multipart-form-post-in-c私はそのリンクで行われますが、バックBad Requestエラーを持って、正確に何をした

。より具体的なエラー:

{"error":"api error","message":"undefined method `key?' for nil:NilClass"} 

3番目のAPIで何が起こっているのかわからないので、このエラーの意味はわかりません。また、私はpdf docを投稿しようとしています。

答えて

0

あなたはこれは私にとって良い作品のHttpClient

var client = new HttpClient(); 
var image = File.ReadAllBytes("c:\\test.png"); 
var formData = new MultipartFormDataContent(); 
formData.Add(new StreamContent(new MemoryStream(image)), "name","fileName.png"); 
formData.Add(new StringContent("content"), "name"); 

var response = client.PostAsync("http://localhost:5001/api/someMethod", formData).Result; 

if (!response.IsSuccessStatusCode) 
    { 
    Console.WriteLine(response.StatusCode); 
    } 
    else 
    { 
    var content = response.Content.ReadAsStringAsync().GetAwaiter().GetResult(); 
    Console.WriteLine(content); 
    } 

を使用することができます。

+0

HttpWebRequestの代替手段はありますか?また、 'document [description]'とそれらのものはどこに置くのですか? –