Java OutputStream os=con.getOutputStream()抛出NullPointerException
我正在尝试为一个网站构建一个android应用程序,我需要先在这个页面上发布一些价值。 这是我的密码: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
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");