У меня есть вызов AJAX, где звоните веб-сервис. веб-сервис должен возвращать значение (токен в виде строки). Я попробовал свой веб-сервис и попытался вызвать его вручную, он успешно извлек токен в виде строки. но когда я объединяю с вызовом AJAX, он возвращает объект. Как я могу получить значение токена?
вот мой фрагмент AJAX
$.ajax({
url: "http://10.23.64.43:8035/iFrameIntegration.asmx/getToken",
data: JSON.stringify({ Token: { userName: 'crm' } }),
contentType: "application/json; charset=utf-8",
type: 'POST',
success: function (data) {
alert(data);
},
error: function (data) {
alert("Error");
}
});
и вот мой веб-сервис (ASMX)
[WebMethod]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public string getToken()
{
var request = (HttpWebRequest)WebRequest.Create("http://10.23.64.37:8080/ACCMWS/member/SSOInit");
request.Method = "POST";
request.ContentType = "application/json";
request.Headers["userId"] = "Svc_CRM";
request.Headers["loginType"] = "Internal";
request.Headers["token"] = "54a93982adf51adfb81885ddbbb1874e271605ce";
string result = string.Empty;
try
{
using (var streamWriter = new StreamWriter(request.GetRequestStream()))
{
string json = "{ \"userName\": \"crm\"}";
streamWriter.Write(json);
streamWriter.Flush();
streamWriter.Close();
}
try
{
using (var response = request.GetResponse() as HttpWebResponse)
{
if (request.HaveResponse && response != null)
{
using (var reader = new StreamReader(response.GetResponseStream()))
{
var resultTokenAwal = reader.ReadToEnd();
var resultToken = JsonConvert.DeserializeObject<RetrieveSSOTokenResult>(resultTokenAwal);
result = resultToken.data.ssotokenList[0].ssoToken;
}
}
}
}
catch (WebException e)
{
if (e.Response != null)
{
using (var errorResponse = (HttpWebResponse)e.Response)
{
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
{
string error = reader.ReadToEnd();
result = error;
}
}
}
}
}
catch(Exception ex)
{
ex.Message.ToString();
}
return result;
}
и вот мой класс из моего веб-сервиса
public class RetrieveSSOTokenResult
{
public string status { get; set; }
public string message { get; set; }
public Data data { get; set; }
}
public class Data
{
public Ssotokenlist[] ssotokenList { get; set; }
}
public class Ssotokenlist
{
public string loginType { get; set; }
public string userName { get; set; }
public string userId { get; set; }
public string ssoToken { get; set; }
public long expiryTime { get; set; }
}
вот результат, который я получаю при вызове из AJAX
{"d":"f0d7ef7e29b89d42e84d6590b8e7b52f899f3b7a"}
пожалуйста, сообщите, я только хочу предупредить значение токена, который является f0d7ef7e29b89d42e84d6590b8e7b52f899f3b7a.
в asmx, когда я пытаюсь вызвать, я получил только эту информацию
var from resultTokenAwal это
{"d":"status":"success","message":"","data":{"ssotokenList":[{"loginType":"Internal","userName":"CRM","userId":"E512E6D2-1584-4597-BBD6-01C724496107","ssoToken":"2f3b28def21bdace7bd7baacd0cd0bf72fbcb30b","expiryTime":1548047778532}]}}
но, в моем asmx, результат resultTokenAwal это
{"status":"success","message":"","data":{"ssotokenList":[{"loginType":"Internal","userName":"CRM","userId":"E512E6D2-1584-4597-BBD6-01C724496107","ssoToken":"2f3b28def21bdace7bd7baacd0cd0bf72fbcb30b","expiryTime":1548047778532}]}}
UPDATE:
данные на самом деле уже разбираются в JSON в AJAX. так что, просто позвоните д. Вот обновление AJAX.
$.ajax({
url: "http://10.23.64.43:8035/iFrameIntegration.asmx/getToken",
data: JSON.stringify({ Token: { userName: 'crm' } }),
contentType: "application/json; charset=utf-8",
type: 'POST',
success: function (data) {
alert(data.d);
},
error: function (data) {
alert("Error");
}
});