5

コードを実行しようとすると、リモート サーバーがエラーを返しました: (400) 不正な要求エラーが発生しましたどんな助けでも大歓迎です。ありがとう。

    // Open request and set post data
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("myurl.com/restservice/Login");
    request.Method = "POST";
    request.ContentType = "application/json; charset:utf-8";
    string postData = "{ \"username\": \"testname\" },{ \"password\": \"testpass\" }";

    // Write postData to request url
    using (Stream s = request.GetRequestStream())
    {
        using (StreamWriter sw = new StreamWriter(s))
            sw.Write(postData);
    }

    // Get response and read it
    using (Stream s = request.GetResponse().GetResponseStream()) // error happens here
    {
        using (StreamReader sr = new StreamReader(s))
        {
            var jsonData = sr.ReadToEnd();
        }
    }

JSON編集

変更:

{ \"username\": \"jeff\", \"password\": \"welcome\" }

しかし、まだ機能していません。

編集

これは私が見つけたものです:

       // Open request and set post data
    HttpWebRequest request = (HttpWebRequest)WebRequest.Create("myurl.com/restservice/Login");
    request.Method = "POST";
    request.ContentType = "application/json";
    string postData = "{ \"username\": \"testname\", \"password\": \"testpass\" }";

    // Set postData to byte type and set content length
    byte[] postBytes = System.Text.UTF8Encoding.UTF8.GetBytes(postData);
    request.ContentLength = postBytes.Length;

    // Write postBytes to request stream
    Stream s = request.GetRequestStream();
    s.Write(postBytes, 0, postBytes.Length);
    s.Close();

    // Get the reponse
    WebResponse response = request.GetResponse();

    // Status for debugging
    string ResponseStatus = (((HttpWebResponse)response).StatusDescription);

    // Get the content from server and read it from the stream
    s = response.GetResponseStream();
    StreamReader reader = new StreamReader(s);
    string responseFromServer = reader.ReadToEnd();

    // Clean up and close
    reader.Close();
    s.Close();
    response.Close();
4

3 に答える 3

3

試してもらえますかstring postData = "[{ \"username\": \"testname\" },{ \"password\": \"testpass\" }]";

そうすれば、2つのオブジェクトの配列を送信できます

編集:また、本当に送信したいのは2つのプロパティを持つオブジェクトだけかもしれません。string postData = "{ \"username\": \"testname\", \"password\": \"testpass\" }"

于 2012-04-12T20:40:32.073 に答える
0

無効であるため、投稿している JSON から来ているように見えます。送信しているものを以下に示しますが、有効な形式で表示されます。

{
    "username": "testname",
    "password": "testpass"
}
于 2012-04-12T20:41:04.503 に答える