Android HttpUrlConnection导致应用程序崩溃

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

我是一个android初学者,目前正在开发一个餐厅排队系统。我已经设置了一个php页面,该页面回显要调用的“键”,我正在尝试读取该页面,但我的应用程序在调用该函数时总是崩溃

我已经在android清单中添加了互联网权限

主要活动代码如下:

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“有什么想法吗?