0

jsonにデータを投稿するにはどうすればよいですか?パラメータを渡していないというエラーメッセージが表示され続けるので。これは私のc#コードです:

ボタンの起動:url = szAPIURL + url;

WebClient postWithParamsClient = new WebClient();
postWithParamsClient.UploadStringCompleted += 
  new UploadStringCompletedEventHandler(postWithParamsClient_UploadStringCompleted);

postWithParamsClient.Headers["Content-Length"] = postdata.Length.ToString();
postWithParamsClient.UploadStringAsync(new Uri(url), 
                                       "POST", 
                                       "?username=name123&password=pass123");

private void postWithParamsClient_UploadStringCompleted(object sender, 
                                                UploadStringCompletedEventArgs e)
{
    if (e.Error == null)
      MessageBox.Show("WebClient: " + e.Result);
    else
      MessageBox.Show("WebClient: " + e.Error.Message);
}

これは私が電話から受け取るものです:

[{"error_code":2,"error_messages":["You must specify login user name and password"],"tokenid":"","userid":0}]

これは元のajaxAPIです:

var msgData = {};
msgData ['username'] = szUserName;
msgData ['password'] = szEncryptedPassword;

$ .ajax({
url:szAPIURL + "Authenticate"、
type:'POST'、
//データはサーバーに投稿する必要があります。//data:JSON.stringify({data
: "test"})、
data:msgData、
/ * dataType: "jsonp"、* / dataType
: "json"、

4

2 に答える 2

1

これと同じことを行うときに、いくつかの作業を行う必要がありました (ただし、UploadStringAsync ではなく UploadString を使用していました)。

まず、これを Headers コレクションに追加する必要がありました。

postWithParamsClient.Headers.Add("Content-Type", "application/json");

次に、Jevgenij が言及しているように、次のように実際にデータを JSON 文字列として送信する必要があります。

postWithParamsClient.UploadStringAsync(new Uri(url), 
                                   "POST", 
                                   "{ \"username\": \"name123\", \"password\": \"pass123\" }");

更新: 2 番目のパラメーターを渡さない場合"POST"、メソッドは自動的に POST として送信します。

また、余談ですが、WebClient は IDisposable であるため、次のような using ステートメントで使用することをお勧めします。

using (postWithParamsClient = new WebClient()) { }
于 2013-03-22T17:16:20.887 に答える
0

確かではありませんが、の 3 番目のパラメーターは、UploadStringAsync送信する実際のデータです。おそらくあなたはあなた"?username=name123&password=pass123"をURLに入れたいですか?

このようなもの:

client.UploadStringAsync(new Uri(string.Format("{0}?{1}", url, "username=name123&password=pass123")), "POST", "<your data>");
于 2013-03-22T16:42:55.483 に答える