我有以下卷曲代码:

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


和数据末尾的相同。
但是,当然,这只是一个猜测。 :)

09-25 22:00