C#使用REST API POST参数作为数组

时间:2013-06-25 10:55:56

标签: c# php http rest post

我需要在C#

中创建以下PHP POST
$params = array(    
'method' => 'method1',   
'params' => array 
    (    
        'P1' => FOO,    
        'P2' => $Bar, 
        'P3' => $Foo,
    ) 
);

我无法弄清楚如何创建params数组。我尝试使用带有json字符串的WebClient.UploadString()无效。

如何在C#中构建上述内容?

我试试

    using (WebClient client = new WebClient())
    {
        return client.UploadString(EndPoint, "?method=payment");
    }

以上工作但需要更多参数。

    using (WebClient client = new WebClient())
    {            
        return client.UploadString(EndPoint, "?method=foo&P1=bar");
    }

P1无法识别。

我尝试使用UploadValues(),但无法将参数存储在NamedValueCollection

API为https://secure-test.be2bill.com/front/service/rest/process

2 个答案:

答案 0 :(得分:2)

像这里解释的那样:http://www.codingvision.net/networking/c-sending-data-using-get-or-post/

它应该像这样工作:

string urlAddress = "http://www.yoursite.tld/somepage.php?method=foo&P1=bar1&P2=bar2&P3=bar3";  

using (WebClient client = new WebClient())
{
       string response = client.DownloadString(urlAddress);
}

ob也许你想使用post方法......看看链接

在你的

示例中

$php_get_vars = array(    
'method' => 'foo',   
'params' => array 
    (    
        'P1' => 'bar1',    
        'P2' => 'bar2', 
        'P3' => 'bar3',
    ) 
);

它应该是:

string urlAddress = "http://www.yoursite.tld/somepage.php?method=foo&params[P1]=bar1&params[P2]=bar2&params[P3]=bar3";  

答案 1 :(得分:0)

我假设您需要使用POST方法发布数据。很多时候,错误是您没有设置正确的请求标头。

这是一个应该有效的解决方案(首先由Robin Van Persi在How to post data to specific URL using WebClient in C#发布):

string URI = "http://www.domain.com/restservice.php";
string params = "method=foo&P1=" + value1 + "&P2=" + value2 + "&P3=" + value3;

using (WebClient wc = new WebClient())
{
    wc.Headers[HttpRequestHeader.ContentType] = "application/x-www-form-urlencoded";
    string HtmlResult = wc.UploadString(URI, params);
}

如果这不能解决您的问题,请在上面链接的答案中尝试更多解决方案。