gpt4 book ai didi

c# - HTTPWebResponse 不返回任何内容

转载 作者:可可西里 更新时间:2023-11-01 17:04:08 26 4
gpt4 key购买 nike

我们公司与另一家名为 iMatrix 的公司合作,他们拥有用于创建我们自己的表单的 API。他们已经确认我们的请求正在访问他们的服务器,但响应应该以由参数确定的几种方式之一返回。我收到 200 OK 响应,但响应 header 中没有内容且内容长度为 0。

这是网址: https://secure4.office2office.com/designcenter/api/imx_api_call.asp

我正在使用这个类:

命名空间 WebSumit{ 公共(public)枚举方法类型 { 发布 = 0, 得到 = 1

public class WebSumitter
{

public WebSumitter()
{
}

public string Submit(string URL, Dictionary<string, string> Parameters, MethodType Method)
{
StringBuilder _Content = new StringBuilder();
string _ParametersString = "";

// Prepare Parameters String
foreach (KeyValuePair<string, string> _Parameter in Parameters)
{
_ParametersString = _ParametersString + (_ParametersString != "" ? "&" : "") + string.Format("{0}={1}", _Parameter.Key, _Parameter.Value);
}

// Initialize Web Request
HttpWebRequest _Request = (HttpWebRequest)WebRequest.Create(URL);
// Request Method
_Request.Method = Method == MethodType.POST ? "POST" : (Method == MethodType.GET ? "GET" : "");

_Request.UserAgent = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)";
// Send Request
using (StreamWriter _Writer = new StreamWriter(_Request.GetRequestStream(), Encoding.UTF8))
{
_Writer.Write(_ParametersString);
}
// Initialize Web Response

HttpWebResponse _Response = (HttpWebResponse)_Request.GetResponse();


// Get Response
using (StreamReader _Reader = new StreamReader(_Response.GetResponseStream(), Encoding.UTF8))
{
_Content.Append(_Reader.ReadToEnd());
}

return _Content.ToString();
}

}

我无法发布实际参数,因为它们是针对实时系统的,但是你能看看这段代码,看看是否有遗漏的东西吗?

谢谢!

最佳答案

几个明显的问题:

  • 您没有对查询参数进行 URL 编码。如果您的值中有任何空格或特殊字符,服务器可能会拒绝您的输入或将其截断。
  • 您尝试在方法主体中发送数据,即使该方法是 GET——这将失败。如果是 GET,您需要在 URL 查询字符串上粘贴值。
  • 您正在尝试推出您自己的 WebClient 版本而不是仅仅使用 WebClient .下面是一个 WebClient 示例,它处理参数的 URL 编码、正确处理 GET 和 POST 等。

.

public class WebSumitter 
{
public string Submit(string URL, Dictionary<string, string> Parameters, MethodType Method)
{
// Prepare Parameters String
var values = new System.Collections.Specialized.NameValueCollection();
foreach (KeyValuePair<string, string> _Parameter in Parameters)
{
values.Add (_Parameter.Key, _Parameter.Value);
}

WebClient wc = new WebClient();
wc.Headers[HttpRequestHeader.UserAgent] = "Mozilla/4.0 (compatible; MSIE 6.0; Win32)";
if (Method == MethodType.GET)
{
UriBuilder _builder = new UriBuilder(URL);
if (values.Count > 0)
_builder.Query = ToQueryString (values);
string _stringResults = wc.DownloadString(_builder.Uri);
return _stringResults;
}
else if (Method == MethodType.POST)
{
byte[] _byteResults = wc.UploadValues (URL, "POST", values);
string _stringResults = Encoding.UTF8.GetString (_byteResults);
return _stringResults;
}
else
{
throw new NotSupportedException ("Unknown HTTP Method");
}
}
private string ToQueryString(System.Collections.Specialized.NameValueCollection nvc)
{
return "?" + string.Join("&", Array.ConvertAll(nvc.AllKeys,
key => string.Format("{0}={1}", System.Web.HttpUtility.UrlEncode(key), System.Web.HttpUtility.UrlEncode(nvc[key]))));
}
}

关于c# - HTTPWebResponse 不返回任何内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2792372/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com