C# 以编程方式发出GET请求
假设我有以下Jquery请求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
$.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?