我正在尝试使用以下代码将一些字符串从服务发送到 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);
}