2013-03-22 44 views
0

如何在json中發佈數據?當我不斷收到錯誤消息,我沒有通過參數。這是我的C#代碼:在restful json web服務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}]

這是原來的AJAX API:

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

$阿賈克斯({
網址:szAPIURL + 「認證」,
類型: 'POST',
//數據需要發佈TP服務器
//數據:JSON.stringify({數據: 「測試」}),
數據:MSGDATA,
/*數據類型: 「JSONP」,*/
數據類型: 「JSON」,

+0

如果它是一個寧靜的JSON服務可能在被期待的用戶名和密碼,JSON而不是在url中 – 2013-03-22 16:37:14

回答

0

不知道,但UploadStringAsync第三個參數是實際數據,你想發送。可能你想放喲你的網址是"?username=name123&password=pass123"

事情是這樣的:

client.UploadStringAsync(new Uri(string.Format("{0}?{1}", url, "username=name123&password=pass123")), "POST", "<your data>"); 
+0

我想用json web服務發送數據。 – weihan1394 2013-03-23 01:58:55

1

有這樣做同樣的事情時(雖然我使用UploadString而不是UploadStringAsync)我需要做一些事情。

首先,我需要把它添加到頁眉集合:

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

然後,像Jevgenij提到,你必須實際發送數據作爲JSON字符串,像這樣:

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

更新:如果您未傳遞第二個參數"POST",該方法將自動將其作爲POST提交給您。

而且,順便說一句,因爲WebClient的是IDisposable的,我建議你使用它在using語句,如:

using (postWithParamsClient = new WebClient()) { } 
+0

這就是我現在所擁有的: – weihan1394 2013-03-23 01:40:01

+0

string url =「Authenticate」; url = szAPIURL + url; WebClient postWithParamsClient = new WebClient(); 012WpostWithParamsClient.UploadStringCompleted + = new UploadStringCompletedEventHandler(postWithParamsClient_UploadStringCompleted); postWithParamsClient。UploadStringAsync(new Uri(url),「POST」,「{\」username \「:\」name123 \「,\」password \「:\」pass123 \「}」); – weihan1394 2013-03-23 01:40:30

+0

但它仍然給我同樣的問題。 – weihan1394 2013-03-23 01:41:21

相關問題