我如何:通过curl从PHP调用asmx [英] How I : call asmx from PHP by curl

查看:209
本文介绍了我如何:通过curl从PHP调用asmx的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我创建了用于在数据库中保存数据的Web服务



I create web service to save data in database

public string SaveData(String resultData) //save data to database
{
    DLR service = new DLR();
    Context.Response.ContentType = "application/json";
    string filePath = Server.MapPath("~/Error.txt");
    using (StreamWriter writer = new StreamWriter(filePath, true))
    {
        writer.WriteLine("Json is sent :" + resultData +
           "" + Environment.NewLine + "Date :" + DateTime.Now.ToString());
        writer.WriteLine(Environment.NewLine + "-----------------------------------------------------------------------------" + Environment.NewLine);
    }
    RootObject obj = JsonConvert.DeserializeObject<RootObject>(resultData);
        foreach (JsonData item in obj.results)
        {
            {
                var connStr = ConfigurationManager.ConnectionStrings["myCon1"].ConnectionString;
                SqlConnection con = new SqlConnection(connStr);
                try
                {
                    SqlCommand cmd = new SqlCommand("[insert_RDL]", con);
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@msgId", item.msgId);
                    cmd.Parameters.AddWithValue("@to_mobile", item.to);
                    cmd.Parameters.AddWithValue("@status", item.status);
                    cmd.Parameters.AddWithValue("@ttest", "");
                    cmd.Parameters.AddWithValue("@newtest", "");
                    con.Open();
                    cmd.ExecuteNonQuery();
                }
                finally
                {
                    //                    
                }
            }
        }
        return "OK ";
    }





当我在aspx页面或PHP SoapClient中通过ajax发布json时,页面发送json没有问题。



但是由PHP Curl发布



When i post the json by ajax in aspx page or by PHP SoapClient the page is sending json without problem .

But post it by PHP Curl

<?php
$data = '{"results": [{"msgId": "001","to": "9665312114","status": "D"}, {"msgId": "859911880","to": "966535112578","status": "N"}, {"msgId": "859911880","to": "966535112579","status": "S"}]}' ;
$param = array('resultData' => $data);
var_dump($param);
echo "<hr>";
print_r($param);
$headers = array('Accept: application/json','Content-Type: application/json', );
echo "<hr>";
$ch = curl_init(); 
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
//curl_setopt($ch, CURLOPT_VERBOSE, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_URL, "http://asdm.sa/DLR.asmx/SaveData");
curl_setopt($ch, CURLOPT_POSTFIELDS, $param); 

 $result =curl_exec($ch);

print_r($result);
echo "<hr>";
if(curl_exec($ch) === false)
{
    echo 'Curl error: ' . curl_error($ch);
}
else
{
    echo 'Operation completed without any errors';
}
?>





A发送或发送json的问题NULL



A problem a json is sent or sent NULL

{"Message":"Invalid JSON primitive: --------------------------60620f7a041fa3f6.","StackTrace":" at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializePrimitiveObject()\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.DeserializeInternal(Int32 depth)\r\n at System.Web.Script.Serialization.JavaScriptObjectDeserializer.BasicDeserialize(String input, Int32 depthLimit, JavaScriptSerializer serializer)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize(JavaScriptSerializer serializer, String input, Type type, Int32 depthLimit)\r\n at System.Web.Script.Serialization.JavaScriptSerializer.Deserialize[T](String input)\r\n at System.Web.Script.Services.RestHandler.GetRawParamsFromPostRequest(HttpContext context, JavaScriptSerializer serializer)\r\n at System.Web.Script.Services.RestHandler.GetRawParams(WebServiceMethodData methodData, HttpContext context)\r\n at System.Web.Script.Services.RestHandler.ExecuteWebServiceCall(HttpContext context, WebServiceMethodData methodData)","ExceptionType":"System.ArgumentException"}







How i can sloved it

Thank you





我尝试过:



我使用Postman创建curl命令以供参考。

但同样的问题>



What I have tried:

I used Postman to create the curl command for reference.
But Same problem >

推荐答案

数据 = ' {results:[{msgId:001,to:9665312114 ,status:D},{msgId:859911880,to:966535112578,status:N},{msgId:859911880,to: 966535112579,状态:S}]}';
data = '{"results": [{"msgId": "001","to": "9665312114","status": "D"}, {"msgId": "859911880","to": "966535112578","status": "N"}, {"msgId": "859911880","to": "966535112579","status": "S"}]}' ;


param = array(' resultData' =>
param = array('resultData' =>


data);
var_dump(
data); var_dump(


这篇关于我如何:通过curl从PHP调用asmx的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆