Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/343.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java OutputStream os=con.getOutputStream()抛出NullPointerException_Java_Android_Nullpointerexception_Http Post_Urlconnection - Fatal编程技术网

Java OutputStream os=con.getOutputStream()抛出NullPointerException

Java OutputStream os=con.getOutputStream()抛出NullPointerException,java,android,nullpointerexception,http-post,urlconnection,Java,Android,Nullpointerexception,Http Post,Urlconnection,我正在尝试为一个网站构建一个android应用程序,我需要先在这个页面上发布一些价值。 这是我的密码: private void sendPOST(String user,String pass) throws IOException { String POST_PARAMS = "username="+user+"&password="+pass; URL obj = new URL("http://xx.xx.xx.xx/mys

我正在尝试为一个网站构建一个android应用程序,我需要先在这个页面上发布一些价值。 这是我的密码:

private void sendPOST(String user,String pass) throws IOException {

        String POST_PARAMS = "username="+user+"&password="+pass;           
        URL obj = new URL("http://xx.xx.xx.xx/mysite/test.php");          
        HttpURLConnection con = (HttpURLConnection) obj.openConnection();
        con.setRequestMethod("POST");
        con.setRequestProperty("User-Agent", "Mozilla/5.0");

        //----------------------------------------------------------- For POST only - START---------------------------------------------

         con.setDoOutput(true);
         OutputStream os = con.getOutputStream();
         os.write(POST_PARAMS.getBytes());
         os.flush();
         os.close();

        // ------------------------------------------------------------For POST only - END----------------------------------------------------
        int responseCode = con.getResponseCode();                   
        if (responseCode == HttpURLConnection.HTTP_OK) { //success
            BufferedReader in = new BufferedReader(new InputStreamReader(
            con.getInputStream()));
            String inputLine;
            StringBuffer response = new StringBuffer();
            while ((inputLine = in.readLine()) != null) {
                response.append(inputLine);
            }
            in.close();
            // print result
            Toast.makeText(getApplicationContext(), response.toString()==""?"No Result":response.toString(), Toast.LENGTH_LONG).show();
        } else {
            Toast.makeText(getApplicationContext(),"POST request failed", Toast.LENGTH_LONG).show();
        }
    }
执行此行时
OutputStream os=con.getOutputStream()
出现空异常。
我不能再继续下去了。请建议我必须执行哪些操作才能删除此异常。

在使用创建的
HttpURLConnection con
执行任何操作之前,您可能应该先尝试“连接”

HttpURLConnection con = (HttpURLConnection) obj.openConnection();
con.connect();
用con做更多的事情

我希望这对你有帮助:)

URL类对象“obj”无法正确访问您提到的URL

请尝试以下方法:

URL obj = new URL("http://"+"xx.xx.xx.xx/mysite/test.php"); 

将您的数据开发服务器放在
localhost
以外的其他位置(尝试使用真正的IP,例如:
192.168.0.1


有时,您将从
HttpUrlConnection.openConnection()
(它返回非null对象)接收到成功的连接,这并不保证后续调用成功。换句话说,当您调用
con.getOutputStream()
时,无论
con
是否为非空,它都会抛出一个异常。

这是一个老问题,但我可能必须回答它,因为我今天要面对它。当你ping http(而不是https)时,你必须在manifest->application:
android:usesCleartextTraffic=“true”

中输入,我尝试了你的建议,但没有成功。仍然得到异常。根据目前提供的信息,
con
不可能在该点抛出NPE。因此,你很可能只是误解了/错误地解释了这个问题。因此,如果您编辑问题以粘贴未修改的堆栈跟踪,这将很有帮助,只是为了避免麻烦。
androidstudio中的javapost方法抛出异常。不,不是在Android Studio中,而是在你的应用程序中。不是java post,而是HttpUrlConnection post。删除Toast()语句。它们不能与网络代码一起使用。在异步任务或线程中调用此代码?如果没有,您有一个NetworkOnMainathreadException.What's difference?这两者之间没有区别,您能详细介绍一下这是如何解决问题的吗?
URL obj = new URL("http://"+"xx.xx.xx.xx/mysite/test.php");