Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.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
C# 以编程方式发出GET请求_C#_Jquery - Fatal编程技术网

C# 以编程方式发出GET请求

C# 以编程方式发出GET请求,c#,jquery,C#,Jquery,假设我有以下Jquery请求 $.ajax({ type: "GET", url: "http://localhost:8501/exampleservice.svc/rest/Start", contentType: "application/json; charset=utf-8", processData: false, data: { confirmationNu

假设我有以下Jquery请求

   $.ajax({
            type: "GET",
            url: "http://localhost:8501/exampleservice.svc/rest/Start",
            contentType: "application/json; charset=utf-8",
            processData: false,
            data: { confirmationNum : '90210' },
            dataType: "json",
            success: function (data, status, xhr)
            {
            },
            error: function (xhr, status, error)
            {
            },
            complete: function (xhr, status)
            {
            }
        });
在C#中正确的方法是什么? 我尝试了以下操作,但数据流中出现错误:

“类型为'System.Net.ProtocolViolationException'的未处理异常”


这里的问题是,GET请求中有一个主体。以下是解决您的问题的两种解决方案:

  • 将请求类型更改为
    POST
    ,而不是
    GET
    类型:“POST”

  • 删除您的
    contentType:“application/json;charset=utf-8”
    参数<如果您正在执行
    GET
    请求,则code>ContentType无效<代码>获取请求不应具有内容类型,因为它们没有请求实体


  • 这里的问题是,GET请求中有一个主体。以下是解决您的问题的两种解决方案:

  • 将请求类型更改为
    POST
    ,而不是
    GET
    类型:“POST”

  • 删除您的
    contentType:“application/json;charset=utf-8”
    参数<如果您正在执行
    GET
    请求,则code>ContentType无效<代码>获取请求不应具有内容类型,因为它们没有请求实体


  • GET请求没有正文/内容。因此,使用:

    Stream dataStream = request.GetRequestStream();
    dataStream.Write(jsonData, 0, jsonData.Length);
    dataStream.Close();
    
    可能导致“System.Net.ProtocolViolationException”

    如果要通过GET请求传递自定义数据,请通过QueryString或Header附加自定义参数


    否则,请改用POST请求。

    GET请求没有正文/内容。因此,使用:

    Stream dataStream = request.GetRequestStream();
    dataStream.Write(jsonData, 0, jsonData.Length);
    dataStream.Close();
    
    可能导致“System.Net.ProtocolViolationException”

    如果要通过GET请求传递自定义数据,请通过QueryString或Header附加自定义参数


    否则,请改用POST请求。

    因为其他用户已经回答了,所以您不会在GET请求的内容体中传递JSON对象。然而,使用他们建议的post方法不是RESTful,这似乎是您试图基于示例URL的语义构建的

    在RESTful服务中,简单访问器是通过作为URL路径片段传递的参数实现的(例外情况通常是复杂的查询,在这种情况下,在URL或POST中使用查询变量)。您的情况并非如此,因为您是通过简单的ID访问的。因此,例如,如果您试图获取ID为12345的生物特征捕获资源,您可以访问URL:


    http://localhost:8501/exampleservice.svc/rest/biocaptures/12345

    正如其他用户已经回答的那样,GET请求不需要在内容体中传递JSON对象。然而,使用他们建议的post方法不是RESTful,这似乎是您试图基于示例URL的语义构建的

    在RESTful服务中,简单访问器是通过作为URL路径片段传递的参数实现的(例外情况通常是复杂的查询,在这种情况下,在URL或POST中使用查询变量)。您的情况并非如此,因为您是通过简单的ID访问的。因此,例如,如果您试图获取ID为12345的生物特征捕获资源,您可以访问URL:


    http://localhost:8501/exampleservice.svc/rest/biocaptures/12345

    将数据作为URL的一部分,如下所示

    HttpWebRequest request =   (HttpWebRequest)HttpWebRequest.Create("http://localhost:8501/exampleservice.svc/rest/Start?confirmationNum='90210'");
                request.Method = "GET";
                request.ContentType = "application/json; charset=utf-8";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    

    将数据作为URL的一部分,如下所示

    HttpWebRequest request =   (HttpWebRequest)HttpWebRequest.Create("http://localhost:8501/exampleservice.svc/rest/Start?confirmationNum='90210'");
                request.Method = "GET";
                request.ContentType = "application/json; charset=utf-8";
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
    

    如果已经指定了
    数据类型:“json”
    是否检查了方法是否为GET?如果已经指定了
    数据类型:“json”
    ,则不需要设置
    内容类型:“application/json;charset=utf-8”
    ,是否检查了方法是否为GET?