Java URL连接

Java URL连接,java,urlconnection,Java,Urlconnection,简单的东西,我在课堂上学习URL/网络,我试图在网页上显示一些东西。稍后我将把它连接到MySQL数据库。。。总之,这是我的计划: import java.net.*; import java.io.*; public class asp { public static URLConnection connection; public static void main(String[] args) { try { System.out.p

简单的东西,我在课堂上学习URL/网络,我试图在网页上显示一些东西。稍后我将把它连接到MySQL数据库。。。总之,这是我的计划:

import java.net.*; import java.io.*;


public class asp {

    public static URLConnection
connection;

    public static void main(String[] args) {

        try {

        System.out.println("Hello World!"); // Display the string.
        try {
        URLConnection connection = new URL("post.php?players").openConnection();
    }catch(MalformedURLException rex) {}
        InputStream response =
connection.getInputStream();
        System.out.println(response);
    }catch(IOException ex) {}

    } }
它编译得很好。。。但当我运行它时,我得到:

你好,世界
线程“main”java.lang.NullPointerException中出现异常 在asp.main(asp.java:17)

第17行:InputStream响应=connection.getInputStream()

谢谢,
Dan

这是因为您的URL无效。您需要将完整地址放入您试图打开连接的页面。您正在捕获malformedurlexception,但这意味着此时没有“连接”对象。在第一个catch块出现后,还有一个额外的闭合括号。应该将获取空指针的行和system.out.println放在catch块上方

import java.net.*; import java.io.*;

public class asp {

    public static URLConnection connection;

    public static void main(String[] args) {

        try {
        System.out.println("Hello World!"); // Display the string.
            try {
            URLConnection connection = new URL("http://localhost/post.php?players").openConnection();
            InputStream response = connection.getInputStream();
            System.out.println(response);

            }catch(MalformedURLException rex) {
                System.out.println("Oops my url isn't right");
        }catch(IOException ex) {}
    }    
}

这是因为您的URL无效。您需要将完整地址放入您试图打开连接的页面。您正在捕获malformedurlexception,但这意味着此时没有“连接”对象。在第一个catch块出现后,还有一个额外的闭合括号。应该将获取空指针的行和system.out.println放在catch块上方

import java.net.*; import java.io.*;

public class asp {

    public static URLConnection connection;

    public static void main(String[] args) {

        try {
        System.out.println("Hello World!"); // Display the string.
            try {
            URLConnection connection = new URL("http://localhost/post.php?players").openConnection();
            InputStream response = connection.getInputStream();
            System.out.println(response);

            }catch(MalformedURLException rex) {
                System.out.println("Oops my url isn't right");
        }catch(IOException ex) {}
    }    
}

您有一个格式错误的URL,但您不会知道,因为吞下了它的异常

URL("post.php?players")
此URL不完整,它缺少主机(可能是
localhost
为您?)和协议部分,例如
http
,因此为了避免格式错误的URL异常,您必须提供包含协议的完整URL

new URL("http://www.somewhere-dan.com/post.php?players")

首先使用上的Sun教程。至少我们知道该代码段是有效的,如果您用有效的URL替换该示例中的URL,您应该有一段工作代码。

您有一个格式错误的URL,但您不会知道,因为吞没了它的异常

URL("post.php?players")
此URL不完整,它缺少主机(可能是
localhost
为您?)和协议部分,例如
http
,因此为了避免格式错误的URL异常,您必须提供包含协议的完整URL

new URL("http://www.somewhere-dan.com/post.php?players")

首先使用上的Sun教程。至少大家都知道这个片段是有用的,如果用有效的URL替换该示例中的URL,您应该有一段工作代码。

我没有得到这一部分:您应该将获取空指针的行和system.out.println放在catch blocksOK上方,我将其替换为:并且在第17行上获取空指针异常,这是输入流响应的同一行yada yada…:P@Dan:您的URL仍缺少其协议部分。看看我的答案。@Bakkal(顺便说一句好名字):你是什么意思?我迷路了(@Bakkal:SO sate the protocol part.@Dan:你为什么要在
catch
块中连接它?如果抛出了
MalformedURLException
,你就不能合理地期望URL格式正确(因此有效).我没有得到这部分:你应该把你得到空指针的那一行和system.out.println放在catch blocks上面,我用:替换了它,我在第17行得到了空指针异常,这是InputStream响应yada yada的同一行…:P@Dan:您的URL仍然缺少协议部分。请参阅我的答案。@Bakkal(好名字顺便说一句):你什么意思?我迷路了。(@Bakkal:所以吃了协议部分。@Dan:你为什么还要在
catch
块中连接它?如果抛出了
MalformedURLException
,你就不能合理地期望URL格式正确(因此有效)。请将
catch
块中的所有代码替换为
e.printStackTrace()
或只是
throw e
。抑制异常不会对您有多大帮助,因为它们包含有关问题原因的信息。您知道,一旦了解了原因,解决方案就显而易见了;)请使用Java命名约定,并使用以大写字母开头的类名!请注意,catch块适用于出现错误的情况。如果您必须将代码放入catch块,那么您已经做了一些非常糟糕的事情,需要重新考虑整件事!鉴于fundamen存在问题,这不是一件简单的事情Java中的tal概念,如可见性范围…请将
catch
块中的所有代码替换为
e.printStackTrace()
或只是
抛出e
。抑制异常对您没有多大帮助,因为它们包含有关问题原因的信息。您知道,一旦了解了原因,解决方案就显而易见了;)请使用Java命名约定,并使用以大写字母开头的类名!请注意,catch块适用于出现错误的情况。如果您必须将代码放入catch块,那么您已经做了一些非常糟糕的事情,需要重新考虑整件事!鉴于fundamen存在问题,这不是一件简单的事情Java中的tal概念,比如可见性范围……这是因为您在try中设置的连接变量不在connection.getInputStream()的范围内。它使用的是范围更广的静态连接变量,该变量一直为空。这是因为您在try中设置的连接变量不在connection.getInputStream()的范围内。它使用的是范围更广的静态连接变量,该变量一直为空。