2017-10-17 24 views
2

我试着使用形式的URL编码下面的代码如何正确地从PHP和卷曲后转换为C#HTTP客户端后为团购API

<?php 
    // requires PHP cURL http://no.php.net/curl 
    $datatopost = array (
     "supplier_id" => "1", 
     "token" => "xYRPKcoakMoiRzWgKLV5TqPSdNAaZQT", 
     "ci_lineitem_ids" => json_encode (array (54553919, 54553920)), 
    ); 
    $ch = curl_init ("https://scm.commerceinterface.com/api/v4/mark_exported"); 
    curl_setopt ($ch, CURLOPT_POST, true); 
    curl_setopt ($ch, CURLOPT_POSTFIELDS, $datatopost); 
    curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true); 
    $response = curl_exec ($ch); 
    if($response) { 
     $response_json = json_decode($response); 
     if($response_json->success == true) { 
     //Successfully marked as exported (only items which are not already marked exported 
     } else { 

     } 
    } 

与C#中的HTTP客户端工作的转换如下内容类代替$datatopost阵列在PHP

FormUrlEncodedContent markExportedContent = new FormUrlEncodedContent(new[] { 
    new KeyValuePair<string,string>("supplier_id",country.supplier_id), 
    new KeyValuePair<string, string>("token",country.token), 
    new KeyValuePair<string, string>("ci_lineitem_id", JsonConvert.SerializeObject(country.ci_lineitem_ids)) 
}); 

,然后使用一个HTTP客户端发布此的API,但是我得到以下响应

{"reason": "Missing Parameters (ci_lineitem_ids).", "reason_code": 400, "success": false} 

我认为它与我使用的Newtonsoft Json包中的JsonConvert.SerializeObject(country.ci_lineitem_ids)有关,它将字符串数组转换为json编码数组,如PHP代码中所示。

任何人都能够与一些想法,以帮助,为什么这是不工作的期望,因为我全力以赴在现在这个尝试过多种不同的方式这个人之前做到这一点的想法?

+1

你忘了 “S” 的'ci_lineitem_id' – Crowcoder

回答

1

除非是拼写错误,否则您在c#代码中的第三个参数的末尾忘记了s。

ci_lineitem_ids是在你的PHP

ci_lineitem_id是在C#

+0

简单的错别字是令人问题关闭。在投票结束之前,我一直在等待确定情况。 – Crowcoder

+0

我已接受的答案,因为这是在代码中的错字。我将不得不等待实际测试这一变化,但毫无疑问,它会起作用。 –