C# 如何 get/set 来自 asmx Web 服务的数据
C# How to get/set data from asmx Web Service
我正在使用 VisualStudio2013。重要的是读者要注意,这个 asmx 派生自的代码可以完美地工作,但我不知道如何使用 asmx WebService。我从这里下载了整个九码https://sourceforge.net/projects/shorturl-dotnet/
我不知道如何 get/set 以下 CreateUrl() WebMethod 的属性。我想学习如何使用整个 WebService 但从这里开始。
在下面的示例中,我将 URL 发送到 CreateURL() 方法,这将缩短 URL 并执行其他任务;我不知道如何从返回的 ShortUrl.Container Class 中获取属性:在 class(es) 返回到我的调用方法后,我没有成功访问数据。
// 网络方法
public class API : System.Web.Services.WebService {
[WebMethod]
public ShortUrl.Container CreateUrl(string real_url)
{
ShortUrl.Container oShortUrl = new ShortUrl.Container();
oShortUrl.RealUrl = real_url;
oShortUrl.ShortenedUrl = ShortUrl.Utils.UniqueShortUrl();
oShortUrl.CreateDate = DateTime.Now;
oShortUrl.CreatedBy = HttpContext.Current.Request.UserHostAddress;
ShortUrl.Utils.AddUrlToDatabase(oShortUrl);
oShortUrl.ShortenedUrl = ShortUrl.Utils.PublicShortUrl(oShortUrl.ShortenedUrl);
return oShortUrl;
}
}
// ShortUrl.Container class 作为 oShortUrl
返回
namespace ShortUrl
{
/// <summary>
/// Container for the ShortURL object
/// </summary>
public class Container
{
private string _real_url;
private string _short_url;
private DateTime _create_date;
private string _created_by;
public Container()
{
this.CreateDate = DateTime.Now;
this.CreatedBy = "tap";
this.RealUrl = null;
this.ShortenedUrl = "Unknown";
}
public string RealUrl
{
get { return _real_url; }
set { _real_url = value; }
}
public string ShortenedUrl
{
get { return _short_url; }
set { _short_url = value; }
}
public DateTime CreateDate
{
get { return _create_date; }
set { _create_date = value; }
}
public string CreatedBy
{
get { return _created_by; }
set { _created_by = value; }
}
}
}
在 VS2013 中,我添加服务引用以指向 http://tap.tools.api.asmx 作为服务端点,并将 VS2013 引用命名为 ShortenUrl。 VS2013 生成 APISoapClient 和 Container classes.
// get/set properties of the ShortUrl.Container class
// by means of APISoapClient
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// get/set properties of the ShortUrl.Container class
// by means of Container class
ShortenUrl.Container c = new ShortenUrl.Container();
string url = c.RealUrl;
我都没有得到任何结果,我认为我的问题是在 public ShortUrl.Container CreateUrl(string real_url) 方法中实例化的 oShortUrl 对象的实例。我不知道如何从容器 class returns 的 oShortUrl 实例获取任何属性到我的方法。
// oShortUrl
ShortUrl.Container oShortUrl = new ShortUrl.Container();
奇怪的是,asmx 的使用听起来既陈旧又过时,但我从未使用过 - 任何 - WebServices,这解释了为什么我很虚弱并让自己陷入法庭的怜悯。
// 编辑:2016-07-19 ~2:41pm
VS2013 从 WSDL 生成了几个 classes,其中两个在 Intellisense 中似乎很有用...
// class APISoapClient 和 class 容器
当我将局部变量与 APISoapClient 一起使用时,会生成一个缩短的 URL,正如我使用 SQL Management Studio 所见,并注意所有数据均已正确生成,但我无法 get/set 在任何其他 WebMethods 或属性上 get/set 数据...
// Exposes two WebMethods: CreateUrl and GetUrl
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
// Does generate the shortened URL
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// Should return the URL that was shortened but doesn't
u.GetUrl("i2Z5H");
还有...
// Exposes the properties in Intellisense but does not return data
ShortenUrl.Container c = new ShortenUrl.Container();
// returns 1/1/0001 12:00:00 AM
lblCreateDate.Text = "CreateDate: " + c.CreateDate.ToString();
// returns nothing
lblCreatedBy.Text = "CreatedBy: " + c.CreatedBy;
// returns nothing
lblRealUrl.Text = "RealUrl: " + c.RealUrl;
// returns ShortenUrl.Container
lblShortenedUrl.Text = "ShortenedUrl: " + u.GetUrl("i2Z5H");
如果我理解您想要获得的是从 Web 方法返回的容器。如果是这样,那么只需创建一个变量类型的 Container 并将方法调用分配给它。喜欢 ShortUrl.Container c = u.CreateUrl(...)
然后从 c
你可以得到你正在寻找的值。
想想这个@clintongallagher。当您执行以下调用时,
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
[WebMethod]
public ShortUrl.Container CreateUrl(string real_url)
{
ShortUrl.Container oShortUrl = new ShortUrl.Container();
oShortUrl.RealUrl = real_url;
//here you're assigning a value to this object, let's say 'A'
oShortUrl.ShortenedUrl = ShortUrl.Utils.UniqueShortUrl();
oShortUrl.CreateDate = DateTime.Now;
oShortUrl.CreatedBy = HttpContext.Current.Request.UserHostAddress;
//then here you're saving the object with the Shortened value 'A' you just got
ShortUrl.Utils.AddUrlToDatabase(oShortUrl);
/*
*finally you're replacing the Shortened value with another value,
*let's say 'B', which is the object you're going to return*/
oShortUrl.ShortenedUrl = ShortUrl.Utils.PublicShortUrl(oShortUrl.ShortenedUrl);
return oShortUrl;
}
我不知道 GetUrl(shortened_value)
应该如何工作,但是,假设它将从数据库中获取 shortened_value 传入,当然结果不会相同,因为保存的缩短值是 'A' 而您要求的是 B
.
我正在使用 VisualStudio2013。重要的是读者要注意,这个 asmx 派生自的代码可以完美地工作,但我不知道如何使用 asmx WebService。我从这里下载了整个九码https://sourceforge.net/projects/shorturl-dotnet/
我不知道如何 get/set 以下 CreateUrl() WebMethod 的属性。我想学习如何使用整个 WebService 但从这里开始。
在下面的示例中,我将 URL 发送到 CreateURL() 方法,这将缩短 URL 并执行其他任务;我不知道如何从返回的 ShortUrl.Container Class 中获取属性:在 class(es) 返回到我的调用方法后,我没有成功访问数据。
// 网络方法
public class API : System.Web.Services.WebService {
[WebMethod]
public ShortUrl.Container CreateUrl(string real_url)
{
ShortUrl.Container oShortUrl = new ShortUrl.Container();
oShortUrl.RealUrl = real_url;
oShortUrl.ShortenedUrl = ShortUrl.Utils.UniqueShortUrl();
oShortUrl.CreateDate = DateTime.Now;
oShortUrl.CreatedBy = HttpContext.Current.Request.UserHostAddress;
ShortUrl.Utils.AddUrlToDatabase(oShortUrl);
oShortUrl.ShortenedUrl = ShortUrl.Utils.PublicShortUrl(oShortUrl.ShortenedUrl);
return oShortUrl;
}
}
// ShortUrl.Container class 作为 oShortUrl
返回namespace ShortUrl
{
/// <summary>
/// Container for the ShortURL object
/// </summary>
public class Container
{
private string _real_url;
private string _short_url;
private DateTime _create_date;
private string _created_by;
public Container()
{
this.CreateDate = DateTime.Now;
this.CreatedBy = "tap";
this.RealUrl = null;
this.ShortenedUrl = "Unknown";
}
public string RealUrl
{
get { return _real_url; }
set { _real_url = value; }
}
public string ShortenedUrl
{
get { return _short_url; }
set { _short_url = value; }
}
public DateTime CreateDate
{
get { return _create_date; }
set { _create_date = value; }
}
public string CreatedBy
{
get { return _created_by; }
set { _created_by = value; }
}
}
}
在 VS2013 中,我添加服务引用以指向 http://tap.tools.api.asmx 作为服务端点,并将 VS2013 引用命名为 ShortenUrl。 VS2013 生成 APISoapClient 和 Container classes.
// get/set properties of the ShortUrl.Container class
// by means of APISoapClient
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// get/set properties of the ShortUrl.Container class
// by means of Container class
ShortenUrl.Container c = new ShortenUrl.Container();
string url = c.RealUrl;
我都没有得到任何结果,我认为我的问题是在 public ShortUrl.Container CreateUrl(string real_url) 方法中实例化的 oShortUrl 对象的实例。我不知道如何从容器 class returns 的 oShortUrl 实例获取任何属性到我的方法。
// oShortUrl
ShortUrl.Container oShortUrl = new ShortUrl.Container();
奇怪的是,asmx 的使用听起来既陈旧又过时,但我从未使用过 - 任何 - WebServices,这解释了为什么我很虚弱并让自己陷入法庭的怜悯。
// 编辑:2016-07-19 ~2:41pm
VS2013 从 WSDL 生成了几个 classes,其中两个在 Intellisense 中似乎很有用...
// class APISoapClient 和 class 容器
当我将局部变量与 APISoapClient 一起使用时,会生成一个缩短的 URL,正如我使用 SQL Management Studio 所见,并注意所有数据均已正确生成,但我无法 get/set 在任何其他 WebMethods 或属性上 get/set 数据...
// Exposes two WebMethods: CreateUrl and GetUrl
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
// Does generate the shortened URL
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
// Should return the URL that was shortened but doesn't
u.GetUrl("i2Z5H");
还有...
// Exposes the properties in Intellisense but does not return data
ShortenUrl.Container c = new ShortenUrl.Container();
// returns 1/1/0001 12:00:00 AM
lblCreateDate.Text = "CreateDate: " + c.CreateDate.ToString();
// returns nothing
lblCreatedBy.Text = "CreatedBy: " + c.CreatedBy;
// returns nothing
lblRealUrl.Text = "RealUrl: " + c.RealUrl;
// returns ShortenUrl.Container
lblShortenedUrl.Text = "ShortenedUrl: " + u.GetUrl("i2Z5H");
如果我理解您想要获得的是从 Web 方法返回的容器。如果是这样,那么只需创建一个变量类型的 Container 并将方法调用分配给它。喜欢 ShortUrl.Container c = u.CreateUrl(...)
然后从 c
你可以得到你正在寻找的值。
想想这个@clintongallagher。当您执行以下调用时,
ShortenUrl.APISoapClient u = new ShortenUrl.APISoapClient();
u.CreateUrl("http://clintongallagher.com/tag-target-url.html");
[WebMethod]
public ShortUrl.Container CreateUrl(string real_url)
{
ShortUrl.Container oShortUrl = new ShortUrl.Container();
oShortUrl.RealUrl = real_url;
//here you're assigning a value to this object, let's say 'A'
oShortUrl.ShortenedUrl = ShortUrl.Utils.UniqueShortUrl();
oShortUrl.CreateDate = DateTime.Now;
oShortUrl.CreatedBy = HttpContext.Current.Request.UserHostAddress;
//then here you're saving the object with the Shortened value 'A' you just got
ShortUrl.Utils.AddUrlToDatabase(oShortUrl);
/*
*finally you're replacing the Shortened value with another value,
*let's say 'B', which is the object you're going to return*/
oShortUrl.ShortenedUrl = ShortUrl.Utils.PublicShortUrl(oShortUrl.ShortenedUrl);
return oShortUrl;
}
我不知道 GetUrl(shortened_value)
应该如何工作,但是,假设它将从数据库中获取 shortened_value 传入,当然结果不会相同,因为保存的缩短值是 'A' 而您要求的是 B
.