WebClient UploadString 返回 html 代码,并且不发送数据



我正在尝试使用以下代码将一些字符串从服务发送到 webmethod服务:

private void SendRequest(string filePath, string webService)
{ 
try
{
using (var wb = new WebClient())
{
string data = File.ReadAllText(filePath);
data = "data=" + data;
string res = wb.UploadString(webService, data);                 
}
}
catch (Exception e)
{
logEvents.Write(MyLogClass.LogLevel.Info, "Data not sent " + e.Message);
}
}        

出于某种原因,我不知道 res 是否返回首页的 html 代码。

我以前用 node 这样做过,我的 Web 服务会毫无问题地接受字符串并返回 200。

Web 服务的代码启动如下:

[WebMethod]
public static string Data(string data)

我尝试以多种方式格式化数据,并更改参数和 URL 很好。问题不在于 Web 服务,因为它可以很好地处理我的节点请求。会是什么?

通过序列化正在发送的数据并使用WebRequest而不是WebClient来解决此问题。

编辑

var webRequest = WebRequest.Create(webService);
webRequest.Method = "POST";
webRequest.ContentType = "application/json";
string data = File.ReadAllText(filePath);
var jsonObject = new { data };
var serializedObject = JsonConvert.SerializeObject(jsonObject);
var bytes = Encoding.ASCII.GetBytes(serializedObject);
var requestStream = webRequest.GetRequestStream();
requestStream.Write(bytes, 0, bytes.Length);
HttpWebResponse response = (HttpWebResponse)webRequest.GetResponse();

尝试显式指定Headers

using (var wb = new WebClient())
{
wb.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
string data = File.ReadAllText(filePath);
data = "data=" + data;
string res = wb.UploadString(webService, /*"POST",*/ data);
}

相关内容

  • 没有找到相关文章

最新更新