asp网站,如何利用提供的api和json的结果把ip地址转为所在城市呢?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了asp网站,如何利用提供的api和json的结果把ip地址转为所在城市呢?相关的知识,希望对你有一定的参考价值。

用asp写了一个留言板,每个留言者都会显示ip,但是这样不方便,找了个api可以把ip地址转换为城市,是josn的,不知道具体该如何写。另外网站的js文件为外部文件,所以能不能最好不要把asp代码写到js里面。

api地址:aaa.com/?app=ip.get&ip=8.8.8.8&appkey=10000
返回的结果:

"success":"1",
"result":
"ip":"8.8.8.8",
"att":"美国",
"detailed":"美国",
"area_style_simcall":"美国",
"area_style_areanm":"美利坚合众国"



以上是返回的结果,网页代码如下:
.......
do while not rs.eof
%>
<li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> IP:<%=rs("ip")%></li>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>

目标就是把上面的IP:<%=rs("ip")%>通过api转换为城市。
因为每一个页面都会有好几个ip,所以不会写了,求助!!
而且js是外部文件,最好能提交ip给外部的js,然后返回结果,然后输出,求助!!

参考技术A 我觉得都放在在服务器端处理很不友好,
不如这样,服务器端读取ip写入页面,给IP用div抱起来,作标识,
dim k:k=1
do while not rs.eof%><li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> <div id="ips_<%=k%>">IP:<%=rs("ip")%></div></li><%
k=k+1
rs.movenextloop
然后在前端页面加载完成后用js遍历 id:ips_k取值IP 异步读json 用js操作json替换掉 id:ips_k

------
json这种东西就应该放在前端完成啊追问

我不会写json啊,能给代码嘛,谢谢啦,我会再追加分数的.....

追答

每一个页面都会有好几个ip,在遍历写入ip的时候直接用函数替换成地址。

IP:<%=rs("ip")%>  ==> <%=dizhi(rs("ip"))%>

函数定义如下,

<script runat="server" language="jscript">
    function getJSON(v)  return eval('(' + v + ')'); 
 </script><!--服务器端js-->
<%
'==================================================
'从2进制数据流生成内容
'==================================================
Function BytesToBstr(strBody,CodeBase)
  dim obj
  set obj=Server.CreateObject("Adodb.Stream")
  obj.Type=1
  obj.Mode=3
  obj.Open
  obj.Write strBody
  obj.Position=0
  obj.Type=2
  obj.Charset=CodeBase
  BytesToBstr=obj.ReadText
  obj.Close
  set obj=nothing
End Function
function dizhi(ip)
dim url,s
url="aaa.com/?app=ip.get&appkey=10000&ip="&ip    'api自行修改
set xhr=server.CreateObject("microsoft.xmlhttp")
xhr.open "get",url,false
xhr.send
s=BytesToBstr(xhr.responsebody,"gb2312")'注意你那个页面的编码,要不可能出乱码
'这个api我没测试,也许会有错?
set o=getJSON(s)
dizhi=o.result.ip&o.result.att&o.result.area_style_simcall    '这里写入页面的地址,可以根据json自己修改下。
end function%>

追问

试了一下,提示
Microsoft JScript 编译错误 错误 '800a03f7'
未结束的字符串常量

http://api.k780.com:88/?app=ip.get&ip=8.8.8.8&appkey=10003&sign=b59bc3ef6191eb9f747dd4e83c99f2a4&format=json

这是api的地址,能帮我测试下么,万分感谢!!

追答

s=BytesToBstr(xhr.responsebody,"gb2312")'注意你那个页面的编码,要不可能出乱码
这一行 编码 改成 utf-8:
s=BytesToBstr(xhr.responsebody,"utf-8")
我测试通过,你试下

本回答被提问者和网友采纳
参考技术B 提供的api能做到吧 我是菜鸟不会

需要开发一个 RESTful API(JSON 和 XML)

【中文标题】需要开发一个 RESTful API(JSON 和 XML)【英文标题】:Need to develop a RESTful API (both JSON and XML) 【发布时间】:2012-03-29 11:12:31 【问题描述】:

我希望在 ASP.NET 上为网站制作一个 RESTful API。我的问题是我需要将它集成到网站中,而不是作为一个单独的项目。

我知道 WCF 让这变得非常简单,并且它是实现它的理想方式,但我认为您不能将 WCF 服务项目和 ASP.Net 网站结合起来,这是否正确?

有没有办法我们可以使用 web 服务 (asmx) 文件来做到这一点(因为我知道 asmx 服务不使用 SOAP?)

我需要这个在同一个项目中的原因是客户将能够为他们的域(网站将使用)购买 ssl,我也需要使 API 安全,但是客户不应要求购买两个 ssl 甚至是通配符之一。 知道了这一点,有没有更好更简单的方法来使用 WCF 做到这一点?

【问题讨论】:

您应该忽略 ASMX。这是一项已被 WCF 取代的遗留技术。 【参考方案1】:

看看新的 MVC4 Beta,它将在今年 3 月至 4 月的某个时间上线,应该能够满足您在构建 Web 应用程序的同时构建 RESTful Web 服务的要求。我没有花太多时间在 MVC4 上详细介绍,但绝对值得一看。友情链接:Get MVC4; MVC4 and WebAPI blog.

希望这会有所帮助!

【讨论】:

【参考方案2】:

您可以使用 ASPNET MVC 与您的网站一起构建 API。

有关构建基本 MVC 站点的一些详细信息,请参阅 How can I implement a site with ASP.NET MVC without using Visual Studio?。

ASPNET MVC 服务可以响应 JSON 或 XML,或两者兼而有之。

两个 SSL 证书没有特殊要求。

【讨论】:

【参考方案3】:

我有一个公开两个 WCF REST 服务的 ASP.NET MVC 3 应用程序。我正在使用 .NET 4。您必须注意如何配置路由。例如,我的 WCF 服务的前缀为“api/v1/”,而所有其他请求均由 ASP.NET MVC 3 处理。

我遇到了一个问题,因为 IIS 拒绝提供一些“本地主机”请求(例如当您的 MVC 3 控制器尝试使用您的 WCF 休息服务时)。这是通过在我的主机文件中添加一个条目来解决的。在实施 OAuth 2.0 资源服务器或授权服务器时也要注意这一点。

在 .NET 4 中使用 WCF 进行 REST 服务可以正常工作,但 JSON 序列化很耗时。默认日期存在问题,而且速度很慢。您可能想看看使用不同的序列化程序。使用 WCF,您可以为免费获得的某些功能牺牲一些灵活性。

ASP.NET MVC 4(和 WEBAPI)仍处于测试阶段,所以对于发布日期较短的项目,我会避免这样做。

【讨论】:

【参考方案4】:

我实际上会使用NancyFX。设置路由非常简单,它带有内置的 XML 和 JSON 序列化程序,它们根据标头中的数据进行操作。

【讨论】:

以上是关于asp网站,如何利用提供的api和json的结果把ip地址转为所在城市呢?的主要内容,如果未能解决你的问题,请参考以下文章

Node.js 和 JSON:从外部网站 api 检索信息

静态网站利用云函数 SCF + API 网关访问自定义后端接口

需要开发一个 RESTful API(JSON 和 XML)

asp.net core mvc api 返回结果的json字段名大写小混乱的问题解决

ASP.NET获取百度地图提供的API接口里面的JSON

将 ASP.NET Core 部署到 IIS UI 和 API 到单独的网站