【问题标题】:How to send array in http get request如何在http get请求中发送数组
【发布时间】:2017-04-21 22:04:16
【问题描述】:
private void timer1_Tick(object sender, System.EventArgs e)
    {
        int iIdx;
        int[] iData;
        bool[] bData;


        if (m_bRegister) // Read registers (4X references)
        {
            // read register (4X) data from slave
            if (adamTCP.Modbus().ReadHoldingRegs(m_iStart, m_iLength, out iData))
            {
                m_iCount++; // increment the reading counter
                txtStatus.Text = "Read registers " + m_iCount.ToString() + " times...";
                // update ListView

                label1.Text = HttpGet("http://127.0.0.1/misc/api1.php?value0=" + iData[0].ToString());
                label2.Text = HttpGet("http://127.0.0.1/misc/api1.php?value1=" + iData[1].ToString());
                label3.Text = HttpGet("http://127.0.0.1/misc/api1.php?value2=" + iData[2].ToString());
                label4.Text = HttpGet("http://127.0.0.1/misc/api1.php?value3=" + iData[3].ToString());
                label5.Text = HttpGet("http://127.0.0.1/misc/api1.php?value4=" + iData[4].ToString());

                for (iIdx = 0; iIdx < m_iLength; iIdx++)
                {
                    listViewModbusCur.Items[iIdx].SubItems[2].Text = iData[iIdx].ToString();            // show value in decimal
                    listViewModbusCur.Items[iIdx].SubItems[3].Text = iData[iIdx].ToString("X04");   // show value in hexdecimal

                }

如何使用 httpget 方法发送数组?上面的代码显示我正在一一发送数据。我需要将它以数组的形式发送并在 api、php 中检索它,以便我可以将它插入到数据库中的一行中。目前是 1 行 1 条数据。

【问题讨论】:

  • 将数组转换为json字符串然后发送
  • 介意展示一些例子。我是菜鸟。只学编程。之前只是简单的编程。

标签: php mysql arrays rest http-get


【解决方案1】:

这是一个在 PHP 中将数组转换为 json 的示例

$arr=array(
    "varl1"=>1,
    "varl2"=>"example",
    "varl3"=>3,
 );

$json_arr=json_encode($arr);

现在您可以发送$json_arr 然后你可以使用json_decode()对其进行解码

【讨论】:

  • 这个是用api.php还是c#编码写的?
  • 这是 php 代码,但如果您需要使用 c# 发送数组,也有类似的技巧
【解决方案2】:

你应该传递 'value0' 成为一个查询字符串,例如:value[]

所以网址会变成

http://127.0.0.1/misc/api1.php?value[]="+ iData[0].ToString()"&value[]="+ iData[1].ToString() and etc what you want to send it " 

或者你应该使用http_build_query 到参数数组数据

您显示的代码是 php ?? api 可能是 php,但代码风格更像 .NET c# 如果我错了,请纠正我。

//更新响应

string[] param = new string[(how many your counter param)]; 
param [0] = "test0"; 
param [1] = "test1"; 
param [2] = "test2"; 

in my example i give you 3
string sParams = JsonConvert.SerializeObject(param) ;
HttpGet("http://127.0.0.1/misc/api1.php?value=" + sParams);

【讨论】:

  • 它是 .NET C#。 api 是在 PHP 中。我尝试根据您提供的示例编写代码库,但出现错误。 “只有赋值、调用、数据……”错误。
  • 字符串[] ss = 新字符串[3]; ss[0] = "test0"; ss[1] = "test1"; ss[2] = "test2";字符串 sParams = JsonConvert.SerializeObject(ss); Uri uriCall = new Uri("localhost:56208/api/CreateGame/?opps=" + sParams);
  • HttpGet("127.0.0.1/misc/api1.php?value0=+ iData[0].ToString()&value1=+ iData[1].ToString()&value2=+ iData[2].ToString()&value3=+ iData[3 ].ToString()value4=+ iData[4].ToString()");这样写对吗?
  • 您也可以这样做,但是当您的 api 读取它时,您将循环使用不同参数名称的所有查询字符串。我更新了我的答案,你应该试试。
  • 这是故意的。我需要为每个查询字符串分配变量并将其应用于我的 api 中的计算。我只是意识到在我的查询字符串中,+ 和 iData [] 之间有空格。会不会有问题?
猜你喜欢
  • 1970-01-01
  • 2011-05-26
  • 1970-01-01
  • 2016-08-04
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
相关资源
最近更新 更多