当前位置: 首页 > 知识库问答 >
问题:

如何在c#的Web服务中发送multipart/form-data?

邓鸿信
2023-03-14

如何在web服务中读取多部分/表单数据?我发送数据使用邮递员身体形式的数据,但邮递员得到错误。

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

错误系统。InvalidOperationException:请求格式无效:多部分/表单数据;边界=----WebKitformBoundary79KY1A1KYYY7QUI。at系统。网状物服务。协议。HttpServerProtocol。系统中的ReadParameters()。网状物服务。协议。WebServiceHandler。CoreProcessRequest()

邮递员发现了那个错误。

在此处输入图像描述

共有1个答案

西门嘉澍
2023-03-14

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;

}
 类似资料:
  • 如何在Python中用请求发送?如何发送文件,我明白了,但是如何用这种方法发送表单数据就不明白了。

  • 问题内容: 如何在python中发送带有请求的请求?我了解如何发送文件,但是通过这种方法如何发送表单数据尚不清楚。 问题答案: 基本上,如果你指定参数(字典),则将发送m而不是。你不限于在该词典中使用实际文件,但是: 可以让你知道你发布了哪些标题;在我们有: 更好的是,你可以通过使用元组而不是单个字符串或字节对象来进一步控制每个部分的文件名,内容类型和其他标题。该元组应该包含2到4个元素;文件名,

  • 问题内容: 我正在开发使用不同服务其余部分的图形界面(用Java编写)。我必须调用这样的服务: 呼叫服务: 当我从Angularjs服务文件中请求时,如果服务具有Content-Type = multipart / form- data,则会收到错误400(错误请求) 如果服务的Content-Type =“ application / x-www-form-urlencoded; charset

  • 我不知道为什么不能让jQuery传递上传数据,因为AJAX对象似乎配置正确,并且发送了正确的content-type/mime-type头部。 我尝试了两种不同的请求形式--一种是将FormData对象包含在文本中,另一种是直接传递FormData对象。 不幸的是,不管怎样,我都无法传递任何内容,$_files和$_post都是空数组。

  • 在POSTMAN中是否有一种方法可以指定部件[0]的内容类型? 部件[0]和部件[1]的密钥名称应该是什么? 如何在第[1]部分中传递documentid? 我指的是:https://docs.docusign.com/esign/restapi/envelopes/envelopes/create/#examples REST API文档

  • 我正在Java上实现一个Restful Web服务,没有框架。我的想法是从文件服务器发送图像,因为将图像存储在数据库中会降低服务器的速度。目前,我有以下返回json内容的代码: 想法?提前谢谢。