为了账号安全,请及时绑定邮箱和手机立即绑定

在 URLconnection 对象上以什么格式发送数据,getInputStream?

在 URLconnection 对象上以什么格式发送数据,getInputStream?

UYOU 2022-12-28 16:09:16
我正在尝试连接到php服务器上的脚本并检索脚本回显的文本。完成我使用了以下代码。代码:=import java.net.*;import java.io.*;class con{public static void main(String[] args){    try{        int c;        URL tj = new URL("http://www.thejoint.cf/test.php");        URLConnection tjcon = tj.openConnection();        InputStream input = tjcon.getInputStream();        while(((c = input.read()) != -1)){            System.out.print((char) c);        }        input.close();    }catch(Exception e){        System.out.println("Caught this Exception:"+e);    }    }}我确实得到了所需的输出,即文本“你会非常成功”。但是当我删除(char)类型转换时,它会产生 76 位长。 8911111732119105108108329810132118101114121321151179999101115115102117108108 我无法理解的数字。我读到getInputStream是 a byte stream,那么应该有数字乘以 8 数字长输出吗?任何见解都会非常有帮助,谢谢
查看完整描述

1 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

它不会打印一个 76 位长的数字。那里有一个循环,它会打印很多数字,每个数字最多三位数字(一个字节)。

在 ASCII 中,89 =“Y”,111 =“o”....

您删除的转换char所做的是将该数字解释为 Unicode 代码点并打印相应的字符(也是一次一个)。

这种逐字节读取文本的方式非常脆弱。它基本上只适用于 ASCII。您应该使用 aReader来包装InputStream. 然后你可以直接读取charString(它会处理字符集,如 Unicode)。

哦,我以为它会给出单个字母的字节表示。

但这正是它的作用。如果使用printlninstead of print(然后它将在其自己的行上打印每个数字),您可以更清楚地看到它。


查看完整回答
反对 回复 2022-12-28
  • 1 回答
  • 0 关注
  • 84 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信