2013-08-05 57 views
3

我想POST一個參數是base64webservice,但它不起作用。如何將base64 POST到Webservice

string postData = "base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH+iRVKDkbOmUiKpxW0/S6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn+96j7zp/wA="; 
    byte[] dataArray = Encoding.Default.GetBytes(postData); 

    HttpWebRequest request = (HttpWebRequest)HttpWebRequest.Create(ServerPage); 
    request.Method = "POST"; 
    request.ContentLength = dataArray.Length; 
    request.ContentType = "application/x-www-form-urlencoded"; 

    Stream dataStream = null; 
    try 
    { 
     dataStream = request.GetRequestStream(); 
    } 
    catch (Exception) 
    { 
    } 

    dataStream.Write(dataArray, 0, dataArray.Length); 
    dataStream.Close(); 

但參數requestHeader變化:

base64=hySGNg22yX0AIjNQvNJw0xHEbi32NH%2BiRVKDkbOmUiKpxW0%2FS6rUgfLmSa527Y8zZ3GmEzfXMB8ry8fH5GjGeJFGqFxDC4A2hLlvIFzyiDeUCqloGDAJoOLa8Jnif1C8nwRte0GNCRM5RXkshLKZP2itZclgDCYz6OgAF7oLNluoB44cZ3AgF1Q8hVgME8LeqgOqxsIzTt3Xn%2B96j7zp%2FwA%3D

這樣的WebService收到一個錯誤的參數:

[WebMethod] 
public string GenerateOrder(string base64) 
{ 
    byte[] buffer = Convert.FromBase64String(base64); //Exception here 
} 
+0

不是100%肯定的答案,因此評論,但你不能嘗試在發送之前和之後編碼字符串? – npinti

回答

3

使用HttpUtility.UrlDecode(base64),從base64 onverting回來了。

+0

我將代碼更改爲字符串b = HttpUtility.UrlDecode(xmlStr); byte [] buffer = Convert.FromBase64String(b);但仍然不工作...返回遠程服務器返回一個錯誤:(500)內部服務器錯誤。但如果我刪除byte [] buffer = Convert.FromBase64String(b); thie行..它的工作... – Jason

+0

什麼是xmlStr?我沒有在您的示例代碼中找到它。如果我從您的示例中獲取requestHeader值,並對其進行解碼,那麼我會得到'postData'中的值。 –

+0

你的字符串是否包含'base64 ='部分?在將其從base64轉換之前,您可能必須先刪除它。 –