gpt4 book ai didi

c# - 在 asp.net 中调用远程 Web 服务

转载 作者:行者123 更新时间:2023-11-30 21:16:34 25 4
gpt4 key购买 nike

我正在尝试调用 geonames 网络服务并以 json 格式返回我的结果。我在网上找到了一些使用 httpwebrequest 的教程,但是在 msdn 中它说这已经过时了。当我的代码到达网络请求时,它会一直超时。有任何想法吗?我的 .asmx 代码如下:

 /// Summary description for Geonames
/// </summary>
[WebService(Namespace = "http://api.geonames.org")]
[WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
[System.ComponentModel.ToolboxItem(false)]
// To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line.
[System.Web.Script.Services.ScriptService]
public class Geonames : System.Web.Services.WebService
{
private readonly static string FindCoordinates = "http://api.geonames.org/postalCodeSearchJSON?placename={0}&username=<username>";
[WebMethod]
[System.Web.Script.Services.ScriptMethod()]
public string getCoordinates(string location)
{
Uri address = new Uri(String.Format(FindCoordinates, HttpUtility.UrlPathEncode(location)));
// HttpWebRequest wr = (HttpWebRequest)WebRequest.Create(address.AbsoluteUri);
// wr.ProtocolVersion = HttpVersion.Version10;
string jsonResponse = string.Empty;
WebClient client = new WebClient();
jsonResponse = client.DownloadString(address.AbsoluteUri);

return jsonResponse;
}
}

最佳答案

你试过用这个代替吗,它简单多了:

        WebClient client = new WebClient();
client.DownloadString("Your_api_location_goes_here");

这样您就可以将 JSON 作为字符串下载。

此外,您是否尝试过输入网址

http://api.geonames.org/postalCodeSearchJSON?placename= {0}&用户名=

将您的位置放入 fiddler 之类的工具中 - http://www.fiddler2.com/fiddler2/

可能是服务实际上超时了,或者您构建请求的方式不太正确。这样您就可以排除它是服务还是您的代码。

此外,您可能希望从您的问题中删除您的用户名,这样就没有人可以使用您的用户名调用该服务!

关于c# - 在 asp.net 中调用远程 Web 服务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5144797/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com