由于在项目用了显示天气的功能,原有的调用方法 直接通过      <iframe name="weather_inc" src="http://i.tianqi.com/index.php?c=code&id=55" style="border: solid 0px #7ec8ea"    width="278" height="240" frameborder="0" marginwidth="0" marginheight="0" scrolling="no">
     </iframe>

一开始并没有发现什么问题, 但是在最近使用jquery easyui  Datagrid 控件的时候,发现所有 DataGrid 都不显示,而且在其他页面运行很正常的代码也不行,一直找不到原因,之后新建了一个页面,把老页面一个div 一个div 的复制,发现去掉天气 完全没有问题,肯定是天气出了问题。发现报js 错误,联系天气网的客服,发现改完了之后,datagrid 还是不行。

终于痛定思痛,决定自食其力,人家没问题了,那只能自己搞了,打开 http://i.tianqi.com/index.php?c=code&id=55  看了一下源文件 ,发现

<script type="text/javascript" src="http://www.tianqi.com/static/js/jquery.min.new.js"></script>

发现去掉这段完全可以显示天气,不知道他们引用是干嘛的,可是对我没有用啊,

终于发现问题,应该是js 类库冲突了,因为我页面中引用了这个文件

<script type="text/javascript" src="js/jquery-easyui-1.3.2/jquery-1.8.0.min.js"></script>

只能自己处理,于是乎想到了这个类 HttpWebRequest  这个类,

马上新增页面  tianqi.aspx

  public partial class tianqi : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{ HttpWebRequest tianqiRequest = (HttpWebRequest)WebRequest.Create("http://i.tianqi.com/index.php?c=code&id=55");
//如果这里的url是java的servlet编写的
tianqiRequest.Method = "POST";
tianqiRequest.ContentType = "application/x-www-form-urlencoded";
var response = tianqiRequest.GetResponse();
string answer;
using (var sr = new StreamReader(response.GetResponseStream(), System.Text.Encoding.GetEncoding("GB2312")))
{
answer = sr.ReadToEnd();
if (response != null)
{
response.Close();
}
}
      //将这个捣蛋的js 删掉  
if (answer.Contains("<script type=\"text/javascript\" src=\"http://www.tianqi.com/static/js/jquery.min.new.js\"></script>"))
{
answer = answer.Replace("<script type=\"text/javascript\" src=\"http://www.tianqi.com/static/js/jquery.min.new.js\"></script>", ""); }
this.Response.Write(answer); }
}

问题搞定了,以为可以皆大欢喜了,

就在高兴的时候发现,点击枣庄,修改

点保存, 怎还是枣庄,奇怪从ie 里面访问明明是好的,看了一下源文件

原来他们发选择的城市存到Cookie 里了,这里不好搞了, 他们网站存的cookie 我怎么读取啊,懵了,

终于百度找到了一种办法,跨域访问Cookie,下面是代码

/// <summary>
/// 获取Cookie的方法类。
/// </summary>
public class CookieManger
{
/// <summary>
/// 通过COM来获取Cookie数据。
/// </summary>
/// <param name="url">当前网址。</param>
/// <param name="cookieName">CookieName.</param>
/// <param name="cookieData">用于保存Cookie Data的<see cref="StringBuilder"/>实例。</param>
/// <param name="size">Cookie大小。</param>
/// <returns>如果成功则返回<c>true</c>,否则返回<c>false</c>。</returns>
[DllImport("wininet.dll", SetLastError = true)]
public static extern bool InternetGetCookie(
string url, string cookieName,
StringBuilder cookieData, ref int size);
/// <summary>
/// 获取当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。
/// </summary>
/// <param name="uri">当前<see cref="Uri"/>地址。</param>
/// <returns>当前<see cref="Uri"/>的<see cref="CookieContainer"/>实例。</returns>
public static CookieContainer GetUriCookieContainer(Uri uri)
{
CookieContainer cookies = null; // 定义Cookie数据的大小。
int datasize = ;
StringBuilder cookieData = new StringBuilder(datasize); if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
{
if (datasize < )
return null; // 确信有足够大的空间来容纳Cookie数据。
cookieData = new StringBuilder(datasize);
if (!InternetGetCookie(uri.ToString(), null, cookieData,
ref datasize))
return null;
} if (cookieData.Length > )
{
cookies = new CookieContainer();
cookies.SetCookies(uri, cookieData.ToString().Replace(';', ','));
}
return cookies;
} }

  

只需在我原有代码加上这段

try    
{ //跨域访问Cookie     
var CookieContiner = NExplus.NSiter.CookieManger.GetUriCookieContainer(new Uri("http://i.tianqi.com/index.php?c=code&id=55"));
tianqiRequest.CookieContainer = CookieContiner; }
catch (Exception ex)
{ }

  

这下ok了,搞定 完整效果

直接用 iframe 引用我的地址就ok了

asp.net 调用天气所遇到的问题的更多相关文章

  1. ASP.NET调用Web Service

    1.1.Web Service基本概念 Web Service也叫XML Web Service WebService是一种可以接收从Internet或者Intranet上的其它系统中传递过来的请求, ...

  2. Asp.net调用百度搜索引擎

    ASP.NET 调用百度搜索引擎 百度搜索引擎提供了一段嵌入到页面中的代码 <form action="http://www.baidu.com/baidu" target= ...

  3. 在ASP中调用DLL的方法

    .net的dll已经不是严格意义上的动态连接库了,而是一个类或者类库.它是不能直接在ASP.VB等其它的应用环境中使用的.   我们可以通过COM包装器(COM callable wrapper (C ...

  4. Asp.NET调用百度翻译

    Asp.NET调用百度翻译,图示: HTML: <%@ Page Language="C#" AutoEventWireup="true" CodeFil ...

  5. Asp.Net调用Office组件操作时的DCOM配置 (转)

    Asp.Net调用Office组件操作时的DCOM配置 http://blog.csdn.net/gz775/article/details/6447758 在项目中将数据导出为Excel格式时出现“ ...

  6. asp.net调用前台js调用后台代码分享

    asp.net调用前台js调用后台代码分享 C#前台js调用后台代码前台js<script type="text/javascript" language="jav ...

  7. asp.net调用opencv类库,实现图像处理显示

    asp.net调用opencv类库,实现图像处理显示     ​      原理上来说,通过dll的调用,无论是asp.net还是winform都可以调用opencv及其类库.但是在实现的过程还是有许 ...

  8. 利用C++调用天气webservice-gSOAP方法

    首先需要下载一个gSOAP工具包 下载路径为:https://sourceforge.NET/projects/gsoap2/ 至于有关于gSOAP的一些用法和包含的文件的说明可从官网查看:http: ...

  9. asp 按钮 调用ajax时 会出现返回错误,尽量使用html按钮进行调用

    asp 按钮 调用ajax时 会出现返回错误,尽量使用html按钮进行调用

随机推荐

  1. BFS zoj 1649

    http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=1649 //hnldyhy(303882171) 11:12:46 // z ...

  2. 在一个字符串中找到第一个只出现一次的字符。如输入abaccdeff,则输出b

    偶然在群里看到这个小题, 就用python做了做. 思路就是建一个够大的列表并初始化,把每个字符的asc码作为下标,存到列表里, 然后该位置的值就存字母的出现次数, 最后再迭代原字符串并判断列表值是否 ...

  3. Ubuntu server下安装JDK和Tomcat7

    服务器是Ubuntu server 12.04 LTS 64bit 所有操作假设已经有root权限,若没有需要添加sudo. 一. 安装JDK 1.去Oracle官网下载jdk-6u45-linux- ...

  4. Android 使用加速度传感器实现摇一摇功能及优化

    如有转载,请声明出处: 时之沙: http://blog.csdn.net/t12x3456 目前很多应用已经实现了摇一摇功能,这里通过讲解该功能的原理及实现回顾一下加速度传感器的使用: 1.首先获得 ...

  5. htaccess URL重写rewrite与重定向redirect(转)

    1. 将 .htm 页面映射到 .php 1 Options +FollowSymlinks 2 RewriteEngine on 3 RewriteRule ^(.*)\.htm$ $1.php [ ...

  6. Slow Server? This is the Flow Chart You're Looking For--reference

    Your high-powered server is suddenly running dog slow, and you need to remember the troubleshooting ...

  7. yii 载入css or js

    Yii::app()->clientScript->registerScriptFile(Yii::app()->baseUrl . "/js/TableView.js&q ...

  8. Android系统移植与驱动开发——第六章——使用实例来理解Linux驱动开发及心得

    Linux驱动的工作方式就是交互.例如向Linux打印机驱动发送一个打印命令,可以直接使用C语言函数open打开设备文件,在使用C语言函数ioctl向该驱动的设备文件发送打印命令.编写Linux驱动最 ...

  9. Handler导致内存泄露分析

    (非静态)内部类引起内存泄漏的原因         内部类的实现其实是通过编译器的语法糖(Syntactic sugar)实现的,通过生成相应的子类即以OutClassName$InteriorCla ...

  10. KMP算法总结

    kmp算法的T子字符串的下标的变化规律 大话数据结构这边书中的KMP算法的讲解跟最终的算法代码还是有很大的差别 java语言只会if判断语句,循环语句,但是这些语句以及可以包罗万象了,可以适用很多情况 ...