java - Android 中的异步 Http Post

标签 java android eclipse http-post

我正在开发一个与我的网站通信的小型测试应用程序。它使用凭据创建 HttpPost,以便查看用户是否已注册。

但是,由于某种原因,该帖子是立即发布的,尽管它应该需要一秒钟并且总是空的。这是我大约一年前使用的类(class),当时正在工作。

private class LoginTask extends AsyncTask<String, Integer, String> {

    private HashMap<String, String> mData = null;// post data
    public String serverResult = "";
    /**
     * constructor
     */
    public LoginTask(HashMap<String, String> data) {
        mData = data;
    }

    /**
     * background
     */
    @Override
    protected String doInBackground(String... params) {
        byte[] result = null;
        String str = "";
        HttpClient client = new DefaultHttpClient();
        HttpPost post = new HttpPost(params[0]);// in this case, params[0] is URL
        try {
            // set up post data
            ArrayList<NameValuePair> nameValuePair = new ArrayList<NameValuePair>();
            Iterator<String> it = mData.keySet().iterator();
            while (it.hasNext()) {
                String key = it.next();
                nameValuePair.add(new BasicNameValuePair(key, mData.get(key)));
            }

            post.setEntity(new UrlEncodedFormEntity(nameValuePair, "UTF-8"));
            HttpResponse response = client.execute(post);
            StatusLine statusLine = response.getStatusLine();
            if(statusLine.getStatusCode() == HttpURLConnection.HTTP_OK){
                result = EntityUtils.toByteArray(response.getEntity());
                str = new String(result, "UTF-8");
            }
        }
        catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
        catch (Exception e) {
        }
        serverResult = str;
        return str;
    }

    /**
     * on getting result
     */
    @Override
    protected void onPostExecute(String result) {
        serverResult = result;
        pb.setVisibility(View.GONE);

        if(serverResult == "no")
        {
            Toast t = Toast.makeText(MainActivity.this, "Login failed. Correct username or password", Toast.LENGTH_LONG);
            t.show();
        }
        else if (serverResult.contains("email"))
        {
            Toast t = Toast.makeText(MainActivity.this, "HELLOOOOO", Toast.LENGTH_LONG);
            t.show();
        }
        else    
        {
            Toast t = Toast.makeText(MainActivity.this, "Server error: " + serverResult, Toast.LENGTH_LONG);
            t.show();
        }
    }

    protected void onProgressUpdate(Integer... progress) {
        pb.setProgress(progress[0]);
    }
}

发送到服务器的信息肯定是正确的,应该检索一些消息回来,但这里它总是空的。也许后台进程有问题。

最佳答案

logcat 中发生了什么?您那里有任何异常(exception)吗?

您是否将互联网权限添加到 list 中?

<uses-permission android:name="android.permission.INTERNET" />

关于java - Android 中的异步 Http Post,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20666520/

相关文章:

java - 在eclipse中添加java.xml.ws模块

java - 在 Android 中将数组列表从 Activity 传递到 Java 类

android - 音频播放结束时发生咔嗒声。

java - Android ImageView 选择标记

java - 错误 StatusLogger Log4j2 找不到日志记录实现

java - 如何将动态 Web 应用程序转换为 war

java - eclipse中的Querydsl没有在maven项目中生成查询类型类

java - JSON 解析没有值(value)

java - java中如何调用main方法之外的方法

java - 如何从该数组列表中获取值并显示包含该值的文本?