█████ 关于使用XMLHTTP返回值的问题,孟子兄及各位高手请进,谢谢!! █████

csdn8008 2004-01-02 07:58:22
下面是一个用xmlhttp获取其他网站数据的叶面,在我的机子上成功运行,但在服务器上就不行了,是不是xmlhttp版本不同?如何解决?

xmlGet=""
strURL="http://www.yahoo.com.cn"

'创建MS的XMLHTTP组件
Set objXML = CreateObject("Microsoft.XMLHTTP")

' 发送信息
objXML.Open "get", strURL, False
objXML.Send

xmlGet = objXML.responsebody
xmlGet = bytes2bstr(xmlGet)

'分别获取价格数据
strFind1 = instr(1,xmlGet,"大盘",1)+7
strFind2 = instr(strFind1,xmlGet,"<td height=",1)+16
strFind3 = instr(strFind2,xmlGet,"</td>",1)
arrprice(0)=mid(xmlGet,strFind2,strFind3-strFind2)
'arrprice(0)为取得的数据

'以下是bytes2bstr函数
function bytes2bstr(vin)
strreturn = ""
for i = 1 to lenb(vin)
thischarcode = ascb(midb(vin,i,1))
if thischarcode < &h80 then
strreturn = strreturn & chr(thischarcode)
else
nextcharcode = ascb(midb(vin,i+1,1))
strreturn = strreturn & chr(clng(thischarcode) * &h100 + cint(nextcharcode))
i = i + 1
end if
next
bytes2bstr = strreturn
end function


以上为获取雅虎股价部分代码。在我的机子win2000 pro和winxp上运行正常。response.write arrprice(0)返回正常的价格如32.5。
但原封不动移植到服务器上后出现如下错误
response.write arrprice(0)返回如下:

PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<html dir=ltr>

<head>
<style> a:link {font:9pt/11pt 脦氓; color:FF0000} a:visited {font:9pt/11pt 脦氓; color:#4e4e4e}
</style>

<META NAME="ROBOTS" CONTENT="NOINDEX">

<title>脼篓脪陆酶页</title>……

还有很多,只贴出一部分,一些代码?
是不是服务器XMLHTTP环境不同所致?高级服务器版,xml版本可能不同。

如何解决这个问题?
谢谢!
...全文
157 14 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
<xml src=1.xml >可以显示数据,但<xml src=http://214.*.*.*/1.xml >显示不了。两个xml完全相同,路径无误。

实在是没办法了。
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
不是,我在另外服务器上运行可以,唯独一台不行,只能取得asp\htm叶面,取aspx叶面返回

PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 脼篓脪陆酶页
等信息,是response.write返回的。

还提示objDom.save server.MapPath("1.xml")
Unable to save character to 'gb2312' encoding.
这是次要问题,
关键是response.write返回不同,别的都返回价格数值如32.52,他返回html代码。

没办法,我只好将页面生成xml文件放到其他服务器上,然后再这个有病的服务器上用数据岛获取数据,<xml src=http://214.*.*.*/1.xml >
但令人气愤的是在这个有病的服务器本地看数据岛正常,但其他客户机显示不了,是不是xml src 数据岛不支持http方式?

那怎么办?
tsbill 2004-01-03
  • 打赏
  • 举报
回复
是不是编码的问题,Unicode?

只是感觉,可以试一下。
yangzixp 2004-01-03
  • 打赏
  • 举报
回复
我机器上的代码取aspx文件也可以啊。是不是你访问的页需要身份验证哦?
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
up,
如何取得网上的其他网站的 aspx 叶面的代码里的数据?

是需要调整服务器配置还是需要改写代代吗?

谢谢!
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
我刚在服务器上装了.net框架,重启,还是无法获取aspx文件源代码无法找到网页。
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
原来是ie打了补丁后xml数据岛不能访问其他服务器上的xml文件。
如<xml src=http://*.*.*.*/*.xml>将不起作用。

是不是服务器上没装.net框架,导致无法获取aspx文件源代码?
csdn8008 2004-01-03
  • 打赏
  • 举报
回复
获取其他网站aspx叶面源代码,在我的机子上调试正常,放到服务器上就出现下面错误。
如果不指定页面,如http://www.xxx.com/
则返回:
正在建立
您想要连接的站点目前没有默认页。可能正在被进行升级。

指定为一个存在的aspx叶面如index.aspx则出现错误如下
PUBLIC "-//W3C//DTD HTML 3.2 Final//EN"> 无法找到网页

如果换成获取其他asp\htm叶面,则没问题。

是什么原因,如何解决?
tsbill 2004-01-03
  • 打赏
  • 举报
回复
没具体的环境也帮不到你了,帮你顶吧。
csdn8008 2004-01-02
  • 打赏
  • 举报
回复
谢谢孟子兄,
我是要取得网上的其他网站的 aspx 叶面的代码里的数据。

取数据的这段程序是用vbs(asp),
在我的机子上可以,但传到网站服务器后,只能取得asp叶面的代码里的数据,不能取得aspx叶面代码里的数据。

我觉得应该是服务器环境的问题。

怎么办呢?
csdn8008 2004-01-02
  • 打赏
  • 举报
回复
奇怪,
在我的机子上,可以通过 xmlhttp 取得asp和aspx页面的代码,

但在服务器上只能取得asp叶面代码,

如果试图图的aspx页面代码时,返回找不到页面。

请教高手!谢谢!
孟子E章 2004-01-02
  • 打赏
  • 举报
回复
例子
http://dotnet.aspx.cc/exam/GetPageHtml.aspx
孟子E章 2004-01-02
  • 打赏
  • 举报
回复
aspx页面办法更多,用WebRequest或者WebClient

<%@ Page language="c#" Codebehind="GetPageHtml.aspx.cs" AutoEventWireup="false" Inherits="eMeng.Exam.GetPageHtml" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>得到网页源代码</title>
<meta name="GENERATOR" Content="Microsoft Visual Studio 7.0">
<meta name="CODE_LANGUAGE" Content="C#">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="aspNetBuffer" method="post" runat="server">
<div align="center" style="FONT-WEIGHT: bold">得到任意网页源代码</div>
<asp:TextBox id="UrlText" runat="server" Width="400px">http://dotnet.aspx.cc/content.aspx</asp:TextBox>
<asp:Button id="WebClientButton" Runat="server" Text="用WebClient得到"></asp:Button>
<asp:Button id="WebRequestButton" runat="server" Text="用WebRequest得到"></asp:Button>
<br>
<asp:TextBox id="ContentHtml" runat="server" Width="100%" Height="360px" TextMode="MultiLine"></asp:TextBox>
</form>
</body>
</HTML>


using System;
using System.Collections;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Web;
using System.Web.SessionState;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using System.IO;
using System.Net;
using System.Text;

namespace eMeng.Exam
{
/// <summary>
/// GetPageHtml 的摘要说明。
/// </summary>
public class GetPageHtml : System.Web.UI.Page
{
protected System.Web.UI.WebControls.Button WebClientButton;
protected System.Web.UI.WebControls.Button WebRequestButton;
protected System.Web.UI.WebControls.TextBox ContentHtml;
protected System.Web.UI.WebControls.TextBox UrlText;
private string PageUrl = "";

private void Page_Load(object sender, System.EventArgs e)
{}

#region Web Form Designer generated code
override protected void OnInit(EventArgs e)
{
InitializeComponent();
base.OnInit(e);
}

/// <summary>
/// 设计器支持所需的方法 - 不要使用代码编辑器修改
// 此方法的内容。
/// </summary>
private void InitializeComponent()
{
this.WebClientButton.Click += new System.EventHandler(this.WebClientButton_Click);
this.WebRequestButton.Click += new System.EventHandler(this.WebRequestButton_Click);
this.Load += new System.EventHandler(this.Page_Load);
}
#endregion

private void WebClientButton_Click(object sender, System.EventArgs e)
{
PageUrl = UrlText.Text;
WebClient wc = new WebClient();
wc.Credentials = CredentialCache.DefaultCredentials;

///方法一:
Byte[] pageData = wc.DownloadData(PageUrl);
ContentHtml.Text = Encoding.Default.GetString(pageData);

/// 方法二:
/// ***************代码开始**********
/// Stream resStream = wc.OpenRead(PageUrl);
/// StreamReader sr = new StreamReader(resStream,System.Text.Encoding.Default);
/// ContentHtml.Text = sr.ReadToEnd();
/// resStream.Close();
/// **************代码结束********
///
wc.Dispose();
}

private void WebRequestButton_Click(object sender, System.EventArgs e)
{
PageUrl = UrlText.Text;
WebRequest request = WebRequest.Create(PageUrl);
WebResponse response = request.GetResponse();
Stream resStream = response.GetResponseStream();
StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
ContentHtml.Text = sr.ReadToEnd();
resStream.Close();
sr.Close();
}
}
}
csdn8008 2004-01-02
  • 打赏
  • 举报
回复
好像是 asp叶面可以,但aspx叶面不行。
提示找不到页面。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧