Прочитайте json в веб-сервисе asmx
Я создаю веб-сервис в C#, чтобы получить JSON и вставить его в базу данных:
public string SaveData(string resultData)
{
DLR service = new DLR();
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,settings);
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 ";
}
Когда я публикую json с помощью ajax на странице aspx, страница отправляет json без проблем. и я вижу JSON в error.txt .
когда я отправляю JSON по php:
<?php
$data = '{"results": [{"msgId": "4000","to": "9665312114","status": "D"},
{"msgId": "859911880","to": "966535112578","status": "N"},
{"msgId":"859911880","to": "966535112579","status": "S"}]}' ;
$phpObj = json_decode($data);
print_r($phpObj);
$resultData = json_encode($phpObj);
print_r($resultData);
$client = new SoapClient("http://asdm.sa/DLR.asmx?wsdl");
$response = $client->SaveData($data);
print_r($response);
?>
----------
JSON отправляет NULL. почему страница не отправляет JSON.
когда я открываю error.txt:
Json отправлено:{"results": [{"msgId": "001","to": "9665312114","status": "D"}, {"msgId": "859911880","to": "966535112578","status": "N"}, {"msgId": "859911880","to": "966535112579","status": "S"}]} Дата: 03.02.2008 6:59: 2 часа дня
Json отправлено:
Дата: 3/2/2018 19:31:35
1 ответ
Решение
Похоже, проблема в отправленном параметре. Пожалуйста, попробуйте следующий код
<?php
$data = '{"results": [{"msgId": "4000","to": "9665312114","status": "D"},
{"msgId": "859911880","to": "966535112578","status": "N"},
{"msgId":"859911880","to": "966535112579","status": "S"}]}' ;
$phpObj = json_decode($data);
print_r($phpObj);
$resultData = json_encode($phpObj);
print_r($resultData);
$client = new SoapClient("http://asdm.sa/DLR.asmx?wsdl");
$param = array('resultData' => $data);
$response = $client->SaveData($param);
print_r($response);
?>