Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SOAPAPI-下载二进制记录多部分响应c#_C#_Api_Soap_Multipartform Data_Webex - Fatal编程技术网

SOAPAPI-下载二进制记录多部分响应c#

SOAPAPI-下载二进制记录多部分响应c#,c#,api,soap,multipartform-data,webex,C#,Api,Soap,Multipartform Data,Webex,我正在尝试为我的webex站点使用NBR API。当我运行downloadNBRStorageFile SOAP请求时,它会以流中的webex录制响应 WebResponse response = request.GetResponse(); Stream responseStream = response.GetResponseStream(); 当我从C#中的响应中取出流时,将其写入一个文件。流和文件包含额外的标头详细信息,导致文件无法在基于网络的录音播放机中打开 当我在记事本中检查从AP

我正在尝试为我的webex站点使用NBR API。当我运行downloadNBRStorageFile SOAP请求时,它会以流中的webex录制响应

WebResponse response = request.GetResponse();
Stream responseStream = response.GetResponseStream();
当我从C#中的响应中取出流时,将其写入一个文件。流和文件包含额外的标头详细信息,导致文件无法在基于网络的录音播放机中打开

当我在记事本中检查从API下载的文件时,它如下所示:

------=_零件_281_1815085984.1458150816433 内容类型:text/xml;字符集=UTF-8 内容传输编码:二进制 内容Id:

------=_零件_281_1815085984.1458150816433 内容类型:应用程序/八位字节流 内容传输编码:二进制 内容Id:

鲍勃的私人房间-20160108 1435-1.arf 648735 假的 ------=_零件_281_1815085984.1458150816433 内容类型:应用程序/八位字节流 内容传输编码:二进制 内容Id:

[1] èæVæd…随机字符(.arf文件数据)


1) 如何在C#中只保存文件数据,以便在将其保存为file.arf时能够打开它

 WebResponse response = request.GetResponse();
        //  HttpWebResponse response = (HttpWebResponse)request.GetResponse();



        Stream responseStream = response.GetResponseStream();
        MemoryStream memoryStream = new MemoryStream();

        String test = responseStream.ToString();


        int count = 0;

        do
        {
            count = responseStream.Read(buffer, 0, buffer.Length);
            memoryStream.Write(buffer, 0, count);

            if (count == 0)
            {
                break;
            }
        }
        while (true);

        result = memoryStream.ToArray();


        FileStream fs = new FileStream("c:\\file5.arf", FileMode.OpenOrCreate, FileAccess.ReadWrite);

        fs.Write(result, 0, result.Length);

        fs.Close();
        memoryStream.Close();
        responseStream.Close();

在这方面的任何帮助将不胜感激,因为我已经被困在这几天了。我假设我必须通过多部分流进行解析,以便只保存实际的文件数据,但这正是我要解决的问题

我建议的是,由于响应是soap负载,您可能需要分析响应并调试您感兴趣保存的负载的哪一部分。稍后使用任何xml api加载并保存。@戈麦斯感谢戈麦斯的反馈。我似乎无法从响应中获取xml有效负载……我尝试在VS中调试并查看它将进入哪个属性,但在响应或响应流中看不到它。但我知道它在那里,因为当该流写入文件时,该文件包含所有数据;结果=responseStream.ReadToEnd();然后您可以使用XmlDocument()类来解析或保存它。