Android HttpUrlConnection导致应用程序崩溃
我是一个android初学者,目前正在开发一个餐厅排队系统。我已经设置了一个php页面,该页面回显要调用的“键”,我正在尝试读取该页面,但我的应用程序在调用该函数时总是崩溃 我已经在android清单中添加了互联网权限 主要活动代码如下:Android HttpUrlConnection导致应用程序崩溃,android,httpurlconnection,Android,Httpurlconnection,我是一个android初学者,目前正在开发一个餐厅排队系统。我已经设置了一个php页面,该页面回显要调用的“键”,我正在尝试读取该页面,但我的应用程序在调用该函数时总是崩溃 我已经在android清单中添加了互联网权限 主要活动代码如下: package com.example.mrdias.geradorsenha; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import androi
package com.example.mrdias.geradorsenha;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
EditText campoNome, campoEspecial;
TextView textoNome, textoSenha;
Button botaoSenha;
String nome, especial;
String contador;
String vazio = "";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
campoNome = (EditText) findViewById(R.id.campoNome);
campoEspecial = (EditText) findViewById(R.id.campoEspecial);
botaoSenha = (Button) findViewById(R.id.botaoSenha);
textoNome = (TextView) findViewById(R.id.mostrarNome);
textoSenha = (TextView) findViewById(R.id.mostrarSenha);
}
public void adicionarNomes (View view){
nome = campoNome.getText().toString();
especial = campoEspecial.getText().toString();
textoNome.setText(nome);
textoSenha.setText(especial);
String method = "registro";
BackgroundTask backgroundTask = new BackgroundTask(this);
backgroundTask.execute(method, nome, especial);
}
public void gerasenha (View view){
GeraSenha gerasenha = new GeraSenha();
gerasenha.execute();
contador = gerasenha.s;
}
}
GeraSenha.java是这样的:
import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
/**
* Created by Mr. Dias on 25/09/2017.
*/
public class GeraSenha extends AsyncTask<String, Void, String> {
String s;
TextView textoSenha;
@Override
protected void onPreExecute() {
textoSenha.findViewById(R.id.mostrarSenha);
}
@Override
protected String doInBackground(String... params) {
URL url = null;
try {
url = new URL("http://www.mrdiasfotografia.com.br/mysql/gerarsenha.php");
} catch (MalformedURLException e) {
e.printStackTrace();
}
HttpURLConnection mUrlConnection = null;
try {
mUrlConnection = (HttpURLConnection) url.openConnection();
} catch (IOException e) {
e.printStackTrace();
}
mUrlConnection.setDoInput(true);
InputStream is = null;
try {
is = new BufferedInputStream(mUrlConnection.getInputStream());
} catch (IOException e) {
e.printStackTrace();
}
finally {
mUrlConnection.disconnect();
}
s = String.valueOf(is);
return s;
}
protected void onPostExecute(String result) {
textoSenha.setText(result);
super.onPostExecute(s);
}
}
import java.io.IOException;
导入java.io.InputStream;
导入java.net.HttpURLConnection;
导入java.net.MalformedURLException;
导入java.net.URL;
/**
*Dias先生于2017年9月25日创建。
*/
公共类GeraSenha扩展异步任务{
字符串s;
TextView textoSenha;
@凌驾
受保护的void onPreExecute(){
textoSenha.findViewById(R.id.mostrarSenha);
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
URL=null;
试一试{
url=新url(“http://www.mrdiasfotografia.com.br/mysql/gerarsenha.php");
}捕获(格式错误){
e、 printStackTrace();
}
HttpURLConnection mUrlConnection=null;
试一试{
mUrlConnection=(HttpURLConnection)url.openConnection();
}捕获(IOE异常){
e、 printStackTrace();
}
mUrlConnection.setDoInput(true);
InputStream=null;
试一试{
is=新的BufferedInputStream(mUrlConnection.getInputStream());
}捕获(IOE异常){
e、 printStackTrace();
}
最后{
mUrlConnection.disconnect();
}
s=字符串.valueOf(is);
返回s;
}
受保护的void onPostExecute(字符串结果){
textoSenha.setText(结果);
super.onPostExecute(s);
}
}
所以。。。我修复了textview问题,但现在我从中得到的是这个“com.example.mrdias.geradorsenha”。gerasenha@8963a1“有什么想法吗
on preExecute method
textoSenha variable is null;
textoSenha.findViewById(R.id.mostrarSenha);
它将获得NullPointerException。替换您的代码
@Override
protected void onPreExecute() {
textoSenha.findViewById(R.id.mostrarSenha);
}
用下面的代码
@Override
protected void onPreExecute() {
textoSenha = (TextView) findViewById(R.id.mostrarSenha);
}
你能在这里发布你的错误日志吗?在logCat中搜索异常。可能无法访问URL。您的应用程序在哪一行崩溃?什么是崩溃逻辑?我想没有否决投票的情况。初学英语的人经常犯这些错误,他们甚至不知道对不起,如果我的无知冒犯了你们中的一些人。还不知道如何生成崩溃后日志(是的,我是一个noob),将在这里学习和发布@AbdulWaheed感谢您的帮助和支持。我得到了一个“错误:(23,33)错误:找不到符号方法findViewById(int)”应该在执行后吗?嗯,好的。。。可以尝试在GeraSenha类的构造函数中传递textview的引用。我假设您的textview在MainActivity中。是的,是的,我正在使用一个活动,试图构建功能。第一次使用HttpURLConnect。将尝试和张贴,如果它工作所以。。。我修复了textview问题,但现在我从中得到的是这个“com.example.mrdias.geradorsenha”。gerasenha@8963a1“有什么想法吗?