首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从C#将关联数组传递给PHP

从C#将关联数组传递给PHP
EN

Stack Overflow用户
提问于 2014-01-06 08:25:58
回答 3查看 1.3K关注 0票数 0

我正在从c#打电话给c#。但是,当我必须将关联数组传递给API时,我的问题就出现了。我不知道C#中PHP关联数组的确切实现,但我使用过字典。这不管用。

我一直在使用RestSharp调用API。

代码实现:

代码语言:javascript
复制
  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实现(简称):

代码语言:javascript
复制
 * 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吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-03-15 19:21:38

虽然迟发,但我已经通过以下方法解决了这个问题:

代码语言:javascript
复制
        var request = new RestRequest(ResourceUrl, Method.POST);
        request.AddParameter("request[request-id]", hardwareId);
        request.AddParameter("request[hardware-id]", hardwareId);
票数 1
EN

Stack Overflow用户

发布于 2014-01-06 08:40:29

在C#和PHP中添加对可能会造成约定上的差异吗?你试过使用Add吗?

代码语言:javascript
复制
IDictionary<string,string> dicRequeset = new Dictionary<string, string>();
dicRequeset.Add("request-id", "1234"); 
dicRequeset.Add("hardware-id", "CCCCXXX");

还是用索引器?

代码语言:javascript
复制
dicRequeset["request-id"] = "1234";
dicRequeset["hardware-id"] = "CCCXXX";

或者我能想象的最好的就是JSON,因为它是为传输而设计的。

代码语言:javascript
复制
var serializer = new JavaScriptSerializer();
string json = serializer.Serialize(new {request-id = "1234", hardware-id = "CCCXXX"});

尽管我将第三个变体标记为最佳,但第三个变体的问题可能是PHP可能无法解码JSON字符串,因为它可能不是这样设计的。但是在一般情况下,JSON是用来解决这些问题的。

票数 1
EN

Stack Overflow用户

发布于 2014-01-06 10:04:47

如果我猜得对,RestSharpRestSharp方法不会自动将对象序列化为json,因此只调用对象的toString方法。因此,尝试获取一个JSON.net库并手动进行json编码,

代码语言:javascript
复制
IDictionary<string,string> dicRequeset = new Dictionary<string, string>
                {
                    {"request-id", "1234"},
                    {"hardware-id", "CCCCXXX"},
                };
var jsonstr = JsonConvert.SerializeObject(dicRequeset);
request.AddParameter("request", jsonstr);

这应该能行。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20945840

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档