WebClient UploadString returns html 编码且不发送数据
WebClient UploadString returns html code and does not send data
我正在尝试使用以下代码将一些字符串从服务发送到 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 returning 了首页的 html 代码。
我之前使用节点执行此操作,我的网络服务会毫无问题地接受字符串 return 200。
web服务的代码开始如下:
[WebMethod]
public static string Data(string data)
我试过以多种方式格式化数据并更改参数和 URL 都很好。问题不在 Web 服务中,因为它可以很好地处理我的节点请求。可能是什么?
尝试明确指定 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);
}
通过序列化发送的数据并使用 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();
我正在尝试使用以下代码将一些字符串从服务发送到 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 returning 了首页的 html 代码。
我之前使用节点执行此操作,我的网络服务会毫无问题地接受字符串 return 200。
web服务的代码开始如下:
[WebMethod]
public static string Data(string data)
我试过以多种方式格式化数据并更改参数和 URL 都很好。问题不在 Web 服务中,因为它可以很好地处理我的节点请求。可能是什么?
尝试明确指定 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);
}
通过序列化发送的数据并使用 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();