2014-01-28 41 views
0

我正在從C#調用drupal Web服務。我在drupal中的web服務接受兩個參數。當我使用Chrome擴展POSTMAN檢查我的Web服務時。 IT工作正常,並返回數據。但我不知道如何在Web服務中傳遞這兩個值。我寫我的代碼,這樣如何將變量傳遞給c#中的Web服務?

HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://careernet.localhost/rep-details/report_details/retrieve"); 
        request.Method = "POST"; 
        request.ContentType = "application/json"; 
        request.Accept = "application/xml"; 
        request.CookieContainer = new CookieContainer();      
        request.CookieContainer.Add(new Uri("http://careernet.localhost/rep-details/report_details/retrieve"), new Cookie("sid", sessid)); 
WebResponse response = request.GetResponse(); 

         Stream responseStream = response.GetResponseStream(); 

         // Open the stream using a StreamReader for easy access. 
         StreamReader reader = new StreamReader(responseStream); 

         string responseFromServer = reader.ReadToEnd(); 

上面的代碼工作得很好,如果我沒有通過不接受任何事情任何價值和調用Web服務。但是如果我必須通過兩個價值觀,那我該怎麼做呢?

回答

0

REST Web服務只不過是HTTP請求更多。當你想使用HTTP發送一些東西時,你會發送與實際數據類型無關的字節。這就是人們在使用Web服務時經常使用JSON對象來描述參數和結果的原因。

This post描述瞭如何創建POST HTTP請求。在步驟7中,您在請求流中附加了一些字節。這是你應該追加你的論點的地方。

如果您看到完整的示例(向下滾動),您將看到使用以下代碼片段創建了附加到流的字節數組。

// Create POST data and convert it to a byte array. 
string postData = "This is a test that posts this string to a Web server."; 
byte[] byteArray = Encoding.UTF8.GetBytes (postData); 

既然你只想傳遞簡單的參數而不是對象,這就足夠了。如果你需要傳遞對象作爲參數,我會建議在postData 字符串中使用JSON。

希望我幫了忙!

相關問題