我有以下卷曲代码:
curl 'localhost:8983/solr/sessions/update?commit=true' -H 'Content-type:application/json' -d '[{"Session_SessionId":"da7007e9-fe7a-4bdf-b9e4-1a55034cf08f","Session_HasComments":{"set":true}}]'
我正在尝试转换为C#,但是每次都遇到错误,因此不确定我的代码是否正确...
这是我到目前为止的内容:
string path = "http://localhost:8983/solr/sessions/update?commit=true";
var httpWebRequest = (HttpWebRequest)WebRequest.Create(path);
httpWebRequest.ContentType = "application/json";
httpWebRequest.Method = "POST";
using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
{
string json = "{\"Session_SessionId\":\"" + sessionId + "\"," +
"\"" + fieldName + "\":{\"set\":\"" + fieldValue + "\"}}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
{
var result = streamReader.ReadToEnd();
}
}
这行似乎总是出错():
var httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
我得到的错误是:
The remote server returned an error: (400) Bad Request.","StackTrace":" at System.Net.HttpWebRequest.GetResponse()
有任何想法吗?提前致谢!
戴夫
最佳答案
也许是因为您删除了流到请求中的JSON内容中的方括号?尝试将[]添加回数据的开头/结尾。尽管“ BadRequest”通常是非常严格的错误,它告诉您HTTP请求格式错误,但对于其他情况(例如丢失的会话ID),您的服务器实际上也可能会返回该代码,这可能是在此处发生的。
注意差异:
-d '[{"Session_SessionId":"da70.....
^ bracket
和
string json = "{\"Session_SessionId\":\"" + sessionId + "\"," + ....
^ no bracket
和数据末尾的相同。
但是,当然,这只是一个猜测。 :)