簡體   English   中英

如何在C#的Web服務中發送多部分/表單數據?

[英]how to send multipart/form-data in web services that c#?

如何讀取Web服務中的多部分/表單數據? 我使用郵遞員的身體形式數據發送數據,但郵遞員遇到錯誤。

    public class Api : System.Web.Services.WebService
    {
        [WebMethod(EnableSession = true)]
        [ScriptMethod(ResponseFormat=ResponseFormat.Json)]
        public string Hell(string name)
        {
            return CommonUtilities.GetJSonSerialized(name);
        }
    }

錯誤System.InvalidOperationException:請求格式無效:multipart / form-data; boundary = ---- WebKitFormBoundary79Ky1A1Kfyyy7qUi。 在System.Web.Services.Protocols.WebServiceHandler.CoreProcessRequest()處的System.Web.Services.Protocols.HttpServerProtocol.ReadParameters()處

該錯誤由郵遞員得到。

在此處輸入圖片說明

Asmx文件也可以用於創建REST API(不推薦使用這種方法)。

這可以通過下面的代碼片段實現。

[ScriptService]
[WebService(Namespace = "http://tempuri.org/")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]

public class Randezvous : WebService
{
    [WebMethod]
    [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)]
    public void getUnitPersonels(string user, string pass, decimal unitNo)
    {
        JavaScriptSerializer serializer = new JavaScriptSerializer();
        Context.Response.Clear();
        Context.Response.ContentType = "application/json";
        #region ..:: Kullanıcı şİfre Kontrol ::..
        if (!(unit == "xxx" && pass == "yyy"))
        {

            string msg = "User or pass is wrong.";
            Context.Response.Write(serializer.Serialize(msg));
            return;
        }
        #endregion

        List<Personels> personels = _units.getUnitPersonels(unitNo);

        string jsonString = serializer.Serialize(personels);
        Context.Response.Write(jsonString);
    }
}

您可以使用下面顯示的代碼在c#中測試此代碼:

using (var client = new HttpClient())
{
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var builder = new UriBuilder("http://localhost:18511/Randezvous.asmx/getUnitPersonels");
    var query = HttpUtility.ParseQueryString(builder.Query);
    query["unitNo"] = "0";
    builder.Query = query.ToString();
    string url = builder.ToString();

    var result = Task.FromResult(client.GetAsync(url).Result).Result.Content;
    var resultJson = result.ReadAsStringAsync().Result;

}

暫無
暫無

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

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