簡體   English   中英

HttpResponseMessage 內容未返回正確的內容類型

[英]HttpResponseMessage Content not returning the correct content type

I am trying to return an Xml File and a Class as JSON from my web api as part of business requirements as they do not like to send XML within JSON.

但響應的內容類型不是“multipart/form-data”

API 代碼 C#.Net Core

        [HttpPost("GetMessage")]
    public HttpResponseMessage GetMessage([FromForm]BaseInput baseInput)
    {
        MultipartContent MultiContent = new MultipartContent("form-data");
        HttpResponseMessage ResponseMessage = new HttpResponseMessage();

        StringContent contentMessageJSON = CreateJSONContent(JsonConvert.SerializeObject(rtnVal));
        StringContent contentMessagexml = CreateBusinessMessageContent(rtnVal.MessageXML, "BUSINESSMESSAGE.XML");

        MultiContent.Add(contentMessagexml);
        MultiContent.Add(contentMessageJSON);
        ResponseMessage.Content = MultiContent;

        return ResponseMessage;
    }


public StringContent CreateJSONContent(string strJSON)
    {
        StringContent contentData;
        contentData = new StringContent(strJSON);
        try
        {
            contentData.Headers.Remove("Content-Type");
            contentData.Headers.TryAddWithoutValidation("Content-Transfer-Encoding", "binary");
            contentData.Headers.TryAddWithoutValidation("Content-ID", Guid.NewGuid().ToString());
            contentData.Headers.TryAddWithoutValidation("Content-Disposition", "form-data;name=METADATA");
        }
        catch (Exception ex)
        {
        }
        return contentData;
    }

    public StringContent CreateBusinessMessageContent(string businessmessage, string filename)
    {
        StringContent contentMessagexml = new StringContent(businessmessage);
        try
        {
            contentMessagexml.Headers.Remove("Content-Type");
            contentMessagexml.Headers.TryAddWithoutValidation("Content-Disposition", string.Format("form-data; name=BUSINESSMESSAGE; filename={0}", filename));
            contentMessagexml.Headers.TryAddWithoutValidation("Content-Type", "text/xml");
        }
        catch (Exception ex)
        {
        }
        return contentMessagexml;
    }

客戶端代碼 VB Winforms

        Dim httpresponse As HttpResponseMessage

        'Now send it
        Try

            httpresponse = Await httpClient.PostAsync(txtEndPoint.Text, content)
            Dim MultiPartStreamProv As MultipartStreamProvider = Await httpresponse.Content.ReadAsMultipartAsync()

            Dim stringContent = Await MultiPartStreamProv.Contents(0).ReadAsStringAsync()
            Dim streamContent = Await MultiPartStreamProv.Contents(1).ReadAsStreamAsync()
        Catch ex As Exception

        End Try

在客戶端代碼中,我收到錯誤“提供的‘HttpContent’實例無效。它沒有以‘multipart/’開頭的內容類型 header。參數名稱:內容”

我檢查了,內容類型是 Application/json,不知道為什么。

I am trying to return an Xml File and a Class as JSON from my web api as part of business requirements as they do not like to send XML within JSON.

但響應的內容類型不是“multipart/form-data”

API 代碼 C#.Net Core

        [HttpPost("GetMessage")]
    public HttpResponseMessage GetMessage([FromForm]BaseInput baseInput)
    {
        MultipartContent MultiContent = new MultipartContent("form-data");
        HttpResponseMessage ResponseMessage = new HttpResponseMessage();

        StringContent contentMessageJSON = CreateJSONContent(JsonConvert.SerializeObject(rtnVal));
        StringContent contentMessagexml = CreateBusinessMessageContent(rtnVal.MessageXML, "BUSINESSMESSAGE.XML");

        MultiContent.Add(contentMessagexml);
        MultiContent.Add(contentMessageJSON);
        ResponseMessage.Content = MultiContent;

        return ResponseMessage;
    }


public StringContent CreateJSONContent(string strJSON)
    {
        StringContent contentData;
        contentData = new StringContent(strJSON);
        try
        {
            contentData.Headers.Remove("Content-Type");
            contentData.Headers.TryAddWithoutValidation("Content-Transfer-Encoding", "binary");
            contentData.Headers.TryAddWithoutValidation("Content-ID", Guid.NewGuid().ToString());
            contentData.Headers.TryAddWithoutValidation("Content-Disposition", "form-data;name=METADATA");
        }
        catch (Exception ex)
        {
        }
        return contentData;
    }

    public StringContent CreateBusinessMessageContent(string businessmessage, string filename)
    {
        StringContent contentMessagexml = new StringContent(businessmessage);
        try
        {
            contentMessagexml.Headers.Remove("Content-Type");
            contentMessagexml.Headers.TryAddWithoutValidation("Content-Disposition", string.Format("form-data; name=BUSINESSMESSAGE; filename={0}", filename));
            contentMessagexml.Headers.TryAddWithoutValidation("Content-Type", "text/xml");
        }
        catch (Exception ex)
        {
        }
        return contentMessagexml;
    }

客戶端代碼 VB Winforms

        Dim httpresponse As HttpResponseMessage

        'Now send it
        Try

            httpresponse = Await httpClient.PostAsync(txtEndPoint.Text, content)
            Dim MultiPartStreamProv As MultipartStreamProvider = Await httpresponse.Content.ReadAsMultipartAsync()

            Dim stringContent = Await MultiPartStreamProv.Contents(0).ReadAsStringAsync()
            Dim streamContent = Await MultiPartStreamProv.Contents(1).ReadAsStreamAsync()
        Catch ex As Exception

        End Try

在客戶端代碼中,我收到錯誤“提供的‘HttpContent’實例無效。它沒有以‘multipart/’開頭的內容類型 header。參數名稱:內容”

我檢查了,內容類型是 Application/json,不知道為什么。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM