मैं (JSON वस्तु और एक फ़ाइल के साथ) एक बहुखण्डीय/मिश्रित प्राप्त इस तरह में बहुखण्डीय/मिश्रित पढ़ें, प्रतिक्रिया के रूप में जब मैं एक वेब सेवा को कॉल:सी # (.NET 4.0)
"--Boundary_9_15033478_1405613164044\r\n
Content-Type: application/json
\r\n\r\n{\"docId\":9007492,\"protId\":200,\"protNum\":\"0002084B14\",\"protDate\":\"Wed Jul 16 00:00:00 EEST 2014\",\"categoryId\":1000,\"desc\":\"ѥⷞ ��ƣ䲜��",\"linkNum\":\"ư1\\/00005545\",\"flag1\":\"\",\"flag2\":\"\",\"flag3\":\"\",\"flag4\":\"\",\"stsId\":1,\"stsDesc\":\"WS04: Check Layer I - OK\",\"wsDataList\":[],\"fileName\":\"WsTestToolkitMain.jpg\"}\r\n--Boundary_9_15033478_1405613164044\r\n
Content-Type: application/octet-stream
\r\n\r\n????\0JFIF\0\0`\0`\0\0??\0C\0\a\a\a\a\a\a\b\t\v\t\b\b\n\b\a\a\n\r\n\n\v\f\f\f
...
...
...
??\n?$??\0???????\r\n--Boundary_9_15033478_1405613164044--\r\n"
रास्ता मुझे यह प्रतिक्रिया मिली है (HttpWebRequest की) और फिर इसे यूटीएफ -8 के साथ डीकोड करें। यह मुझे उपरोक्त स्ट्रिंग देता है। प्रश्न मैं JSON कैसे प्राप्त कर सकता हूं और (अधिक महत्वपूर्ण रूप से) फ़ाइल सहेज सकता हूं?
मैं बदल रहा है की कोशिश की (क्योंकि वे बहुखण्डीय/फार्म-डेटा के लिए कर रहे हैं मिश्रित मल्टीपार्ट नहीं /) this और this लेकिन शायद क्योंकि इसकी सामग्री प्रकार आवेदन/ओकटेट धारा है मैं फ़ाइल नहीं मिल सकता है। यहाँ फ़ाइल प्रतीत होता है के रूप में यह क्षतिग्रस्त/खिड़कियों में दूषित काम नहीं करता क्या है,:
// Read the stream into a byte array
byte[] data = ToByteArray(stream);//Source
string content = encoding.GetString(data);
int contentLength = content.Length;//Length
byte[] fileData = new byte[contentLength];//Destination
Buffer.BlockCopy(data, startIndex, fileData, 0, contentLength);
this.FileContents = fileData;
File.WriteAllBytes("G:\\" + parser.Filename, parser.FileContents);
अद्यतन: (! धन्यवाद) एंटोन Tykhyy द्वारा जवाब पालन किया, लेकिन मैं एक त्रुटि जब
हो रही हैvar multipart = await content.ReadAsMultipartAsync() ;
अमान्य 'HttpContent' उदाहरण प्रदान किया गया। इसमें सामग्री-प्रकार हेडर मान नहीं है। 'HttpContent' उदाहरणों में 'मल्टीपार्ट /' से शुरू होने वाली सामग्री-प्रकार शीर्षलेख होना चाहिए।
मैंने पहले
content.Headers.Add("Content-Type", "multipart/mixed");
इस लाइन जोड़ने की कोशिश की लेकिन अब मैं (है कि मैं वास्तव में बहुत समझ में नहीं आता)
अमान्य अन्य त्रुटि प्रदान की 'HttpContent' उदाहरण हो रही है। इसमें 'सीमा' पैरामीटर के साथ 'मल्टीपार्ट' सामग्री-प्रकार शीर्षलेख नहीं है।
अद्यतन 2: मिले यह, मैं सिर्फ यह करना ही था:
var content = new StreamContent(httpResponse.GetResponseStream());
content.Headers.Add("Content-Type", httpResponse.ContentType);
सबसे आसान तरीका सिर्फ 'प्रतीक्षा' के साथ 'प्रतीक्षा' को प्रतिस्थापित करने के लिए है, हालांकि यह धागा को अवरुद्ध करता है। आप 4.5 कंपाइलर के साथ .NET 4.0 को लक्षित करने का प्रयास कर सकते हैं, क्योंकि संकलक-जेनरेट किए गए 'async/await' के समतुल्य कोड को मैन्युअल रूप से' .ContinueWith' का उपयोग करके लिखा जा सकता है, यह जटिल और संकलित है (यही कारण है कि 'async/await' था कंपाइलर में जोड़ा गया)। –