Android 用于将验证代码从服务器发送到邮件的JSON解析不起作用

Android 用于将验证代码从服务器发送到邮件的JSON解析不起作用,android,json,email,email-verification,Android,Json,Email,Email Verification,考虑代码片段: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.register); emailto= (EditText)findViewById(R.id.editText3); verification =

考虑代码片段:

        @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.register);
        emailto= (EditText)findViewById(R.id.editText3);
        verification = (EditText) findViewById( R.id.editText4);
        username = (EditText)findViewById( R.id.editText1);
        password= ( EditText) findViewById(R.id.editText2);
        facebook = (EditText)findViewById( R.id.editText5);
        twitter = ( EditText) findViewById(R.id.editText6);


        verification.setOnFocusChangeListener(new OnFocusChangeListener()
        {
            @Override
            public void onFocusChange(View v, boolean hasFocus) 
            {                   
                new CheckLoginStatusBackgroundThread().execute("");
            }
            });

    }


        class CheckLoginStatusBackgroundThread extends
            AsyncTask<String, Void, String> {




        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {

         HttpURLConnection linkConnection = null;
          try {
            URL linkurl = new URL("http://iipacademy.inaskpoll?email="+emailto);
                linkConnection = HttpURLConnection)linkurl.openConnection();
                int responseCode = linkConnection.getResponseCode();
                if (responseCode == HttpURLConnection.HTTP_OK) {
                  InputStream linkinStream =linkConnection.getInputStream();
                ByteArrayOutputStream baos = new ByteArrayOutputStream();
                    int j = 0;
                    while ((j = linkinStream.read()) != -1) {
                        baos.write(j);
                    }
                    byte[] data = baos.toByteArray();
                    jsonString = new String(data);
                }
            } catch (Exception e) {
                e.printStackTrace();
            } finally {
                if (linkConnection != null) {
                    linkConnection.disconnect();
                }
            }
            Toast.makeText(getApplicationContext(), jsonString.toString(),
                    Toast.LENGTH_SHORT).show();
            return jsonString;
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
        code = result.toString();
                 }
    }
@覆盖
创建时的公共void(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.register);
emailto=(EditText)findViewById(R.id.editText3);
验证=(EditText)findViewById(R.id.editText4);
用户名=(EditText)findViewById(R.id.editText1);
密码=(EditText)findViewById(R.id.editText2);
facebook=(EditText)findViewById(R.id.editText5);
twitter=(EditText)findViewById(R.id.editText6);
验证.setOnFocusChangeListener(新的OnFocusChangeListener()
{
@凌驾
public void onFocusChange(视图v,布尔hasFocus)
{                   
新建CheckLoginStatusBackgroundThread()。执行(“”);
}
});
}
类CheckLoginStatusBackgroundThread扩展
异步任务{
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
}
@凌驾
受保护的字符串doInBackground(字符串…参数){
HttpURLConnection linkConnection=null;
试一试{
URL链接URL=新的URL(“http://iipacademy.inaskpoll?email=“+电邮至);
linkConnection=HttpURLConnection)linkurl.openConnection();
int responseCode=linkConnection.getResponseCode();
if(responseCode==HttpURLConnection.HTTP\u确定){
InputStream linkinStream=linkConnection.getInputStream();
ByteArrayOutputStream bas=新的ByteArrayOutputStream();
int j=0;
而((j=linkinStream.read())!=-1){
编写(j);
}
字节[]数据=baos.toByteArray();
jsonString=新字符串(数据);
}
}捕获(例外e){
e、 printStackTrace();
}最后{
if(linkConnection!=null){
linkConnection.disconnect();
}
}
Toast.makeText(getApplicationContext(),jsonString.toString(),
吐司。长度(短)。show();
返回jsonString;
}
@凌驾
受保护的void onPostExecute(字符串结果){
super.onPostExecute(结果);
code=result.toString();
}
}
我希望此代码将自动生成的代码发送到EditText中提供的邮件id-“emailto”。 这个剧本- “”+emailto
工作正常(可以看到它在浏览器中工作得很好)&正在向我的电子邮件id发送电子邮件

意味着我的脚本中没有问题,而上面提供的android代码片段中的问题

我试了很多,但找不到毛病

谢谢

更新:

12-03 12:37:45.040: E/AndroidRuntime(2496): FATAL EXCEPTION: AsyncTask #2
12-03 12:37:45.040: E/AndroidRuntime(2496): java.lang.RuntimeException: An error occured while executing doInBackground()
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.os.AsyncTask$3.done(AsyncTask.java:299)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.lang.Thread.run(Thread.java:841)
12-03 12:37:45.040: E/AndroidRuntime(2496): Caused by: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.os.Handler.<init>(Handler.java:197)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.os.Handler.<init>(Handler.java:111)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.widget.Toast$TN.<init>(Toast.java:324)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.widget.Toast.<init>(Toast.java:91)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.widget.Toast.makeText(Toast.java:238)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at com.example.askpollie.Register$CheckLoginStatusBackgroundThread.doInBackground(Register.java:112)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at com.example.askpollie.Register$CheckLoginStatusBackgroundThread.doInBackground(Register.java:1)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at android.os.AsyncTask$2.call(AsyncTask.java:287)
12-03 12:37:45.040: E/AndroidRuntime(2496):     at java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-03 12:37:45.040: E/AndroidRuntime(2496):     ... 4 more
12-03 12:37:45.270: W/EGL_emulation(2496): eglSurfaceAttrib not implemented
12-0312:37:45.040:E/AndroidRuntime(2496):致命异常:AsyncTask#2
12-03 12:37:45.040:E/AndroidRuntime(2496):java.lang.RuntimeException:执行doInBackground()时出错
12-03 12:37:45.040:E/AndroidRuntime(2496):在android.os.AsyncTask$3.done(AsyncTask.java:299)
12-03 12:37:45.040:E/AndroidRuntime(2496):在java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:352)
12-03 12:37:45.040:E/AndroidRuntime(2496):位于java.util.concurrent.FutureTask.setException(FutureTask.java:219)
12-0312:37:45.040:E/AndroidRuntime(2496):在java.util.concurrent.FutureTask.run(FutureTask.java:239)
12-03 12:37:45.040:E/AndroidRuntime(2496):在android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230)
12-03 12:37:45.040:E/AndroidRuntime(2496):位于java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080)
12-03 12:37:45.040:E/AndroidRuntime(2496):在java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573)
12-0312:37:45.040:E/AndroidRuntime(2496):在java.lang.Thread.run(Thread.java:841)处
12-03 12:37:45.040:E/AndroidRuntime(2496):原因:java.lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序
12-0312:37:45.040:E/AndroidRuntime(2496):在android.os.Handler.(Handler.java:197)
12-0312:37:45.040:E/AndroidRuntime(2496):在android.os.Handler.(Handler.java:111)
12-0312:37:45.040:E/AndroidRuntime(2496):在android.widget.Toast$TN.(Toast.java:324)
12-0312:37:45.040:E/AndroidRuntime(2496):在android.widget.Toast(Toast.java:91)上
12-0312:37:45.040:E/AndroidRuntime(2496):在android.widget.Toast.makeText(Toast.java:238)上
12-03 12:37:45.040:E/AndroidRuntime(2496):在com.example.askpollie.Register$CheckLoginStatusBackgroundThread.doInBackground(Register.java:112)
12-03 12:37:45.040:E/AndroidRuntime(2496):在com.example.askpollie.Register$CheckLoginStatusBackgroundThread.doInBackground(Register.java:1)
12-03 12:37:45.040:E/AndroidRuntime(2496):在android.os.AsyncTask$2.call(AsyncTask.java:287)
12-03 12:37:45.040:E/AndroidRuntime(2496):在java.util.concurrent.FutureTask.run(FutureTask.java:234)
12-0312:37:45.040:E/AndroidRuntime(2496):。。。4更多
12-03 12:37:45.270:W/EGL_仿真(2496):未实现eglSurfaceAttrib
这一行是错误的:

URL linkurl = new URL("http://iipacademy.inaskpoll?email="+emailto);
emailto
似乎是
EditText
对象,而不是您写入的文本。使用
getText()
方法获取实际文本:

String email = emailto.getText().toString();
URL linkurl = new URL("http://iipacademy.inaskpoll?email="+email);

如果你运行这个会发生什么?有什么例外吗?没有例外,但没有收到电子邮件问题是我没有收到电子邮件你检查了响应代码了吗?可以吗?我不知道如何检查响应代码!不知道