我正致力于从PHP API
致电c#
。但是,当我必须将关联数组传递给API时,我的问题出现了。我不知道C#中PHP关联数组的确切实现,但我使用了字典。它不起作用。
我一直在使用RestSharp
来调用API。
代码实施:
var client = new RestClient(BaseUrl);
var request = new RestRequest(ResourceUrl, Method.POST);
IDictionary<string,string> dicRequeset = new Dictionary<string, string>
{
{"request-id", "1234"},
{"hardware-id", "CCCCXXX"},
};
request.AddParameter("request", dicRequeset);
var response = client.Execute(request);
var content = response.Content;
PHP API实施(简称):
* Expected input:
* string request[request-id,hardware-id]
* Return:
* code = 0 for success
* string activation_code
*/
function activate()
{
$license = $this->checkFetchLicense();
if (!$license instanceof License) return;
$response = $license->activate((array)$this->_request->getParam('request'));
}
有人可以帮我从C#传递数组到PHP API吗?
答案 0 :(得分:1)
也许添加对在C#和PHP中的约定有所不同?您是否尝试过使用Add
?
IDictionary<string,string> dicRequeset = new Dictionary<string, string>();
dicRequeset.Add("request-id", "1234");
dicRequeset.Add("hardware-id", "CCCCXXX");
或使用索引器?
dicRequeset["request-id"] = "1234";
dicRequeset["hardware-id"] = "CCCXXX";
或者我能想到的最好的是JSON,因为它是为传输目的而设计的。
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(new {request-id = "1234", hardware-id = "CCCXXX"});
尽管我将其标记为最佳,但第三种变体中的问题可能是PHP API可能无法解码JSON字符串,因为它可能不是那样设计的。但是通用JSON旨在解决这类问题。
答案 1 :(得分:1)
虽然很晚,但我通过以下方法解决了这个问题:
var request = new RestRequest(ResourceUrl, Method.POST);
request.AddParameter("request[request-id]", hardwareId);
request.AddParameter("request[hardware-id]", hardwareId);
答案 2 :(得分:0)
如果我猜对了,AddParameter
的{{1}}方法不会自动将对象序列化为json,而只是调用对象的RestSharp
方法。
因此,尝试获取JSON.net库并手动生成json编码,
toString
这应该有效。