如何从 web 服务中保存我的变量中的响应
How to save response in my variable from webservice
我是 web 服务的新手,我有飞行状态的试用版,如何在 C# 中获得响应?
我有以下网络服务
https://api.flightstats.com/flex/airlines/soap/v1/airlinesService?wsdl
https://api.flightstats.com/flex/schedules/soap/v1/scheduledFlightsService?wsdl
我想调用其方法并将响应保存在我的变量中,但它显示错误;(我已通过服务参考添加此服务并调用其方法。
这是我的代码 - 请帮忙
private void button1_Click(object sender, EventArgs e)
{
ServiceReference2.flightServiceClient obje = new Windowsflightstate.ServiceReference2.flightServiceClient();
// How to get response
string[] resultdata = obje.flightStatus_arr("b2113423", "65fa387418310aec95a688737f8e0b13", "", "EK4158", 2016, 03, 07, "", "", "", "");
flightscheduleswebservice.scheduledFlightServiceClient client = new Windowsflightstate.flightscheduleswebservice.scheduledFlightServiceClient();
client.byFlight_Arriving("b2113423", "65fa387418310aec95a688737f8e0b13",null, "EK4158", 2016, 03, 07, null, null);
// it is showing error how to get response
string[] resultdata2 = client.byFlight_Arriving("b2113423", "65fa387418310aec95a688737f8e0b13", null, "EK4158", 2016, 03, 07, null, null);
}
请看这张图:
只需使用此代码 - 将 Web 服务调用的 response 分配给 datatype (class)网络服务方法 returns:
private void button1_Click(object sender, EventArgs e)
{
ServiceReference2.flightServiceClient obje = new Windowsflightstate.ServiceReference2.flightServiceClient();
// How to get response
flightscheduleswebservice.responseByFlight resultdata = obje.flightStatus_arr("b2113423", "65fa387418310aec95a688737f8e0b13", "", "EK4158", 2016, 03, 07, "", "", "", "");
// show errors if any
Console.WriteLine("HTTP status code: {0}", resultdata.error.httpStatusCode);
Console.WriteLine("Error code: {0}", resultdata.error.errorCode);
Console.WriteLine("Error message: {0}", resultdata.error.errorMessage);
// display info, if any
if (resultdata.scheduledFlights != null && resultdata.scheduledFlights.Length > 0)
{
Console.WriteLine("Number of flights returned: {0}", resultdata.scheduledFlights.Length);
Console.WriteLine("Flight #1 - carrier name: {0}", resultdata.scheduledFlights[0].carrier.name);
Console.WriteLine("Flight #1 - departure airport name: {0}", resultdata.scheduledFlights[0].departureAirport.name);
Console.WriteLine("Flight #1 - arrival airport name: {0}", resultdata.scheduledFlights[0].arrivalAirport.name);
}
}
从错误中可以看出,很明显 Web 服务调用 returns 一个名为 flightscheduleswebservice.responseByFlight
的 class 实例] - 不是您尝试分配给它的字符串数组。
使用 C# 中的内置机制使用 Web 服务的全部意义在于,您会得到一个很好的 响应对象 - 而不仅仅是一堆 XML字符串。您不需要自己解析 XML 响应 - ServiceReference2.flightServiceClient
class 会为您处理所有这些 - 您会得到一个漂亮的普通 .NET object 你可以一起工作!
我是 web 服务的新手,我有飞行状态的试用版,如何在 C# 中获得响应?
我有以下网络服务
https://api.flightstats.com/flex/airlines/soap/v1/airlinesService?wsdl
https://api.flightstats.com/flex/schedules/soap/v1/scheduledFlightsService?wsdl
我想调用其方法并将响应保存在我的变量中,但它显示错误;(我已通过服务参考添加此服务并调用其方法。
这是我的代码 - 请帮忙
private void button1_Click(object sender, EventArgs e)
{
ServiceReference2.flightServiceClient obje = new Windowsflightstate.ServiceReference2.flightServiceClient();
// How to get response
string[] resultdata = obje.flightStatus_arr("b2113423", "65fa387418310aec95a688737f8e0b13", "", "EK4158", 2016, 03, 07, "", "", "", "");
flightscheduleswebservice.scheduledFlightServiceClient client = new Windowsflightstate.flightscheduleswebservice.scheduledFlightServiceClient();
client.byFlight_Arriving("b2113423", "65fa387418310aec95a688737f8e0b13",null, "EK4158", 2016, 03, 07, null, null);
// it is showing error how to get response
string[] resultdata2 = client.byFlight_Arriving("b2113423", "65fa387418310aec95a688737f8e0b13", null, "EK4158", 2016, 03, 07, null, null);
}
请看这张图:
只需使用此代码 - 将 Web 服务调用的 response 分配给 datatype (class)网络服务方法 returns:
private void button1_Click(object sender, EventArgs e)
{
ServiceReference2.flightServiceClient obje = new Windowsflightstate.ServiceReference2.flightServiceClient();
// How to get response
flightscheduleswebservice.responseByFlight resultdata = obje.flightStatus_arr("b2113423", "65fa387418310aec95a688737f8e0b13", "", "EK4158", 2016, 03, 07, "", "", "", "");
// show errors if any
Console.WriteLine("HTTP status code: {0}", resultdata.error.httpStatusCode);
Console.WriteLine("Error code: {0}", resultdata.error.errorCode);
Console.WriteLine("Error message: {0}", resultdata.error.errorMessage);
// display info, if any
if (resultdata.scheduledFlights != null && resultdata.scheduledFlights.Length > 0)
{
Console.WriteLine("Number of flights returned: {0}", resultdata.scheduledFlights.Length);
Console.WriteLine("Flight #1 - carrier name: {0}", resultdata.scheduledFlights[0].carrier.name);
Console.WriteLine("Flight #1 - departure airport name: {0}", resultdata.scheduledFlights[0].departureAirport.name);
Console.WriteLine("Flight #1 - arrival airport name: {0}", resultdata.scheduledFlights[0].arrivalAirport.name);
}
}
从错误中可以看出,很明显 Web 服务调用 returns 一个名为 flightscheduleswebservice.responseByFlight
的 class 实例] - 不是您尝试分配给它的字符串数组。
使用 C# 中的内置机制使用 Web 服务的全部意义在于,您会得到一个很好的 响应对象 - 而不仅仅是一堆 XML字符串。您不需要自己解析 XML 响应 - ServiceReference2.flightServiceClient
class 会为您处理所有这些 - 您会得到一个漂亮的普通 .NET object 你可以一起工作!