【问题标题】:Can't send parameter through alamofire to webservice无法通过 alamofire 将参数发送到 web 服务
【发布时间】:2017-03-11 04:20:15
【问题描述】:

我想通过 Alamofire 将参数发送到 web 服务。我已经检查了网络服务,它工作正常,但它不接受参数,只是得到其他部分的响应。

这是我在 swift iOS 中使用的 Alamofire 代码。

let parameters: Parameters = [

    "signers": "ram,Rahim",
    "message": "hello,World",
    "path": "www.webservice.com",
    "sequence":"1,2"
]

Alamofire.request("http://www.webservice.pixcel.com/esp.php", parameters: parameters).responseJSON(completionHandler: { (response) in
    print(response)
    print(response.result)
})

这里是Webservice的代码——esp.php

  <?php
  //Turn off all error reporting
  error_reporting(0);

  if( $_SERVER['REQUEST_METHOD']=='POST' && $_POST['signers'] &&  $_POST['message'] && $_POST['path'] && $_POST['sequence']){

   $path_s = $_POST['path'];
   $path_array = explode(',', $path_s);


   $signer_s = $_POST['signers'];
   $signer_array = explode(',', $signer_s);

   $message_s =$_POST['message'];
   $message_array = explode(',', $message_s);

   $sequence_s =$_POST['sequence'];
   $sequence_array = explode(',',  $sequence_s);    

for ($i = 0; $i < count($signer_array); $i++) {


    $signer = ($signer_array[$i]);
    $path = ($path_array[0]);
    $message = ($message_array[0]);
    $sequence =($sequence_array[$i]);


    $con = mysql_connect('pixcel.pixcelinfo.com','user_pixcel','abc123') or die('Cannot connect to the DB');
    mysql_select_db('easy_sign',$con);


          $query = mysql_query("INSERT INTO `path` (url,name,signer,sequence,message,flag)
          VALUES ('".$path."','".$name."','".$signer."','".$sequence."','".$message."','false')");
   }
      if($query){
      // echo "Data inserted";
    $return['url'] = 'true';
    $return['data'] = "Data inserted";

       header('Content-type: application/json');
exit( json_encode( $return ) );
       }


    } else {
        $return['status']='false';
        $return['message']='Data not inserted!';
        $return['line']=__LINE__;

    header('Content-type: application/json');
exit( json_encode( $return ) );
    }

   ?>

【问题讨论】:

  • 您是否使用与您在代码中发布的请求参数相同的 API?
  • 是的,我正在使用这个网络服务。
  • 它在 Postman 上不起作用,我用相同的请求参数检查过它
  • 好友出于安全目的,我必须删除原始凭据。但我确信它正在工作

标签: php ios swift web-services


【解决方案1】:

问题

如果您不指定HTTPMethod,则基于Alamofire docs

Alamofire.request 方法参数默认为.get

所以据此判断,我认为那里发送的请求是.get,因此它没有附加任何参数。

解决方案

将您的代码更改为:

Alamofire.request("http://www.webservice.pixcel.com/esp.php", method: .post, parameters: parameters).responseJSON(completionHandler: { (response) in
    print(response)
    print(response.result)
})

【讨论】:

  • 哥们,我用的是swift 3,你建议的是swift 2.3
  • @MudassarSaiyed 怎么样?在 Swift 2.3 中,它是 .POST 而不是 .post。这是 Swift 3.0 代码
  • 感谢这对我有用
  • 对我来说,出于某种奇怪的原因,我不得不将请求的方法更改为 .get 。虽然我使用的是 Swift 3。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多