aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 6301|回复: 10

请教一下http请求的问题,感谢万能的论坛

[复制链接]

2

主题

5

回帖

44

积分

新手入门

积分
44
发表于 2017-12-26 09:53:47 | 显示全部楼层 |阅读模式
本帖最后由 814655481 于 2017-12-26 09:56 编辑
  1. import win.ui;
  2. import console;
  3. import inet.http;
  4. var http = inet.http();
  5. mainForm.button2.oncommand = function(id,event){
  6.         //mainForm.msgbox( mainForm.button2.text );
  7.         html = http.get("http://blog.sina.com.cn/s/blog_85341cb60101bc0z.html")
  8.         if(html){
  9.                 console.log("采集失败")
  10.         } else {
  11.                 console.log("采集成功")
  12.         }
  13.         console.pause(true)
  14. }
复制代码


请问下为什么提示老是采集失败 我看论坛的帖子都是这样写的啊

作者辛苦了  版本辛苦了  各们师兄好  请您们抽点时间给小弟看看好吗?

12

主题

651

回帖

4023

积分

荣誉会员

子非魚、安知魚之樂

积分
4023
发表于 2017-12-26 10:22:03 | 显示全部楼层
import win.ui;
import console;
import inet.http;
var http = inet.http();

html = http.get(
"http://blog.sina.com.cn/s/blog_85341cb60101bc0z.html")
if(html){
        console.log(
"采集失败")//?为什么html不为空是失败呢
} else {
        console.log(
"采集成功")
}
console.log( html )
// 你自己打印html看看
console.pause(true)

2

主题

5

回帖

44

积分

新手入门

积分
44
 楼主| 发表于 2017-12-26 10:26:17 | 显示全部楼层
本帖最后由 814655481 于 2017-12-26 10:27 编辑
xauto 发表于 2017-12-26 10:22
import win.ui;
import console;
import inet.http;


复制您的代码也打印不出来html的内容啊 请问为什么啊  请指点一下啊 我已经修正了那个错误

现在代码是
  1. import win.ui;
  2. import console;
  3. import inet.http;
  4. var http = inet.http();

  5. html = http.get("http://blog.sina.com.cn/s/blog_85341cb60101bc0z.html")
  6. if(html){
  7.         console.log("采集成功")//?为什么html不为空是失败呢
  8. } else {
  9.         console.log("采集失败")
  10. }
  11. console.log( html )// 你自己打印html看看
  12. console.pause(true)
复制代码

12

主题

651

回帖

4023

积分

荣誉会员

子非魚、安知魚之樂

积分
4023
发表于 2017-12-26 10:30:48 | 显示全部楼层

那就是你网络的原因了

1

主题

47

回帖

1434

积分

新手入门

积分
1434
发表于 2017-12-26 10:34:57 | 显示全部楼层
只是控制台没有显示出来而已,实际内容是有的
  1. import win.ui;
  2. /*DSG{{*/
  3. var winform = win.form(text="aardio form";right=759;bottom=469)
  4. winform.add(
  5. edit={cls="edit";text="edit";left=17;top=10;right=748;bottom=460;edge=1;multiline=1;z=1}
  6. )
  7. /*}}*/

  8. import win.ui;
  9. import console;
  10. import inet.http;
  11. var http = inet.http();
  12. html = http.get("http://blog.sina.com.cn/s/blog_85341cb60101bc0z.html")
  13. if(html){
  14.         console.log("采集成功")//?为什么html不为空是失败呢
  15. } else {
  16.         console.log("采集失败")
  17. }
  18. console.log(html,#html)
  19. winform.edit.text = html

  20. winform.show()
  21. win.loopMessage();
复制代码

2

主题

5

回帖

44

积分

新手入门

积分
44
 楼主| 发表于 2017-12-26 10:38:16 | 显示全部楼层
松江 发表于 2017-12-26 10:34
只是控制台没有显示出来而已,实际内容是有的

真是啊 用什么方法能打印出来 请哥指点下  您辛苦了
真是啊 用什么方法能打印出来 请哥指点下  您辛苦了

1

主题

47

回帖

1434

积分

新手入门

积分
1434
发表于 2017-12-26 10:46:04 | 显示全部楼层
814655481 发表于 2017-12-26 10:38
真是啊 用什么方法能打印出来 请哥指点下  您辛苦了
真是啊 用什么方法能打印出来 请哥指点下  您辛苦了

console.log做了比较多的判断和编码处理,应该是在进行转换的时候有些问题,你可以直接使用
io.open()
io.print(html)
显示

2

主题

5

回帖

44

积分

新手入门

积分
44
 楼主| 发表于 2017-12-26 10:58:54 | 显示全部楼层
松江 发表于 2017-12-26 10:46
console.log做了比较多的判断和编码处理,应该是在进行转换的时候有些问题,你可以直接使用
io.open()
io ...

谢谢哥 感谢你们的帮助 祝你们工作顺利,万事如意
感谢作者 感谢各位师兄

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2017-12-26 12:04:58 | 显示全部楼层
试了一下,确实在有些系统上输出没显示,
并不是 console编码转换导致不显示,而是::Kernel32.WriteConsole一次往控制台写的东西太多了,这个函数会返回内存不足错误。

这是可以理解的,谁会往控制台一次写这么多内容,眼睛也看不过来。

io.print能显示,那是因为他是流,
之所以用 ::Kernel32.WriteConsole 是因为可以避免切换到UTF8模式带来麻烦的编码转换问题。

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2017-12-26 12:24:56 | 显示全部楼层
针对这个问题我改进了一下,如果 ::Kernel32.WriteConsole 返回内存不足错误,改用 io.print输出,

但是只有  ::Kernel32.WriteConsole 在UTF8模式下能真正的支持一些Unicode特殊字符。控制台对Unicode不友好,而且有缓冲区限制( 其实文本框也是有上限的 )。可以在输出以前先处理一下,例如HTML可以转换为文本:
import console;
import string.html;
import inet.http;

var http = inet.http();
var html = http.get("http://blog.sina.com.cn/s/blog_85341cb60101bc0z.html");
var str = string.html.toText(html);

console.log( str ) ;
console.pause(
true);


2

主题

5

回帖

44

积分

新手入门

积分
44
 楼主| 发表于 2017-12-26 13:30:50 | 显示全部楼层
Jacen.He 发表于 2017-12-26 12:24
针对这个问题我改进了一下,如果 ::Kernel32.WriteConsole 返回内存不足错误,改用 io.print输出,

但是 ...

谢谢管理员的解答 您辛苦了 感谢你百忙之中抽出时间回答 学到了
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-4-15 03:41 , Processed in 0.060934 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表