我正在使用c#,而且我是新手。 我有一个网络服务的网址:http://grillassessmentservice.cloudapp.net/GrillMenuService.svc
登录:jobs@isolutions.ch
密码:cleancode
给了我那个XML:
<service xmlns="http://www.w3.org/2007/app" xmlns:atom="http://www.w3.org/2005/Atom"xml:base="http://grillassessmentservice.cloudapp.net/GrillMenuService.svc/">
<workspace>
<atom:title>Default</atom:title>
<collection href="GrillMenus">
<atom:title>GrillMenus</atom:title>
</collection>
<collection href="GrillMenuItemQuantities">
<atom:title>GrillMenuItemQuantities</atom:title>
</collection>
<collection href="GrillMenuItems">
<atom:title>GrillMenuItems</atom:title>
</collection>
</workspace>
</service>
我的控制台应用程序中有c#代码:
static void Main(string[] args)
{
Uri serviceUri = new Uri("http://grillassessmentservice.cloudapp.net/GrillMenuService.svc");
var serviceCreds = new NetworkCredential("foobar@outlook.com", "test");
var cache = new CredentialCache();
cache.Add(serviceUri, "Basic", serviceCreds);
var service = new GrillMenu.GrillMenuContext(serviceUri)
{
Credentials = cache
};
foreach (var grillMenu in service.GrillMenus.Expand(g => g.GrillMenuItemQuantity))
{
Console.WriteLine("Menu: {0}", grillMenu.Name);
foreach (var grillMenuItemQuantity in grillMenu.GrillMenuItemQuantity)
{
service.LoadProperty(grillMenuItemQuantity, "GrillMenuItem");
Console.WriteLine("{0} x {1}", grillMenuItemQuantity.Quantity,
grillMenuItemQuantity.GrillMenuItem.Name);
}
Console.WriteLine();
}
}
但我无法访问网络服务。有人可以解释一下它是如何工作的吗? 我试图通过添加引用访问,给我登录和密码错误。在那个阶段: 谢谢&#39; S。
答案 0 :(得分:0)
它不是标准的Web服务,它是可以通过OData提供程序访问的feed(Atom)类型服务。 要添加它,请右键单击“引用”,“添加服务引用链接”(或类似),粘贴到http://grillassessmentservice.cloudapp.net/GrillMenuService.svc/。 在此之前不要忘记为System.Data.Services添加引用 - 这里是一个完整的示例。
请记住,您需要输入每个子服务的凭据,以便说 - 之后它将起作用。
using System;
using System.Data.Services.Client;
using System.Net;
namespace ConsoleApplication2
{
class Program
{
static void Main(string[] args)
{
Uri grillUri =
new Uri("http://grillassessmentservice.cloudapp.net/GrillMenuService.svc/",
UriKind.Absolute);
ServiceReference1.GrillMenuContext context = new ServiceReference1.GrillMenuContext(grillUri);
var serviceCreds = new NetworkCredential("jobs@isolutions.ch", "cleancode");
var cache = new CredentialCache();
cache.Add(grillUri, "Basic", serviceCreds);
context.Credentials = serviceCreds;
try
{
foreach (ServiceReference1.GrillMenuItem o in context.GrillMenuItems)
Console.WriteLine("Name: {0}", o.Name);
}
catch (DataServiceQueryException ex)
{
Console.WriteLine(ex.Message);
}
}
}
}