【问题标题】:httppost method of android doesnt work with namevalue pairsandroid的httppost方法不适用于名称值对
【发布时间】:2013-12-29 19:51:32
【问题描述】:

下面的代码创建了一个表单,其结果将被发布到服务器(请求到服务器)...我尝试了使用具有相同表单字段的 html 的相同表单,但在这里它不起作用并重定向到主页网站页面.....

公共类 MainActivity 扩展 Activity {

Button submit,fpass;
EditText wbpasswd,wblogid;
TextView loginid,password;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    wblogid = (EditText) findViewById(R.id.wblogid);
    wbpasswd = (EditText) findViewById(R.id.wbpasswd);
    submit = (Button) findViewById(R.id.submit);
    fpass = (Button) findViewById(R.id.fpass);
    loginid = (TextView) findViewById(R.id.loginid);
    password = (TextView) findViewById(R.id.password);
    fpass.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            Toast.makeText(getBaseContext(), "You have clicked the fpass button",
                    Toast.LENGTH_SHORT).show();
        }
        });
    submit.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
             new Thread(new Runnable() {
                    public void run() {
            // Create a new HttpClient and Post Header
            HttpClient httpclient = new DefaultHttpClient();
            HttpPost httppost = new HttpPost("http://www.ebharatgas.com/ebgas/login");

            try {
                // Add your data
                List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                nameValuePairs.add(new BasicNameValuePair("wblogid", wblogid.getEditableText().toString()));
                nameValuePairs.add(new BasicNameValuePair("wbpasswd", wbpasswd.getEditableText().toString()));
                httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

                // Execute HTTP Post Request
                HttpResponse response = httpclient.execute(httppost);
                String t = EntityUtils.toString(response.getEntity());
                Intent i = new Intent("com.example.ebharatgas.Activity2");
                i.putExtra("code", t);
                startActivity(i); 

            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
            } catch (IOException e) {
                // TODO Auto-generated catch block
            }
                    }
              }).start();
            //Toast.makeText(getBaseContext(), "You have clicked the fpass button",
                    //Toast.LENGTH_SHORT).show();
        }
        });

}   

}

另外请告诉我如何在我的 android 活动中显示来自服务器的响应...我是 android 编程的初学者...请帮助我...提前致谢..

【问题讨论】:

  • 使用 asynctask 并在 onPostExecute 中显示响应
  • 实际上我在单独的线程中执行请求过程时出错,所以我这样做了...我猜 asynctask 也一样...我正在从服务器获得响应,但不是响应我期待的只是一个主页....什么是异步任务?
  • http post code 看起来不错。

标签: android post http-post


【解决方案1】:

像这样试一试:

私有类 JsonResponse 扩展 AsyncTask {

    String response = "";

    protected void onPreExecute() 
    {

    }

    protected void onPostExecute(String result) 
    {   
        if(response.equalsIgnoreCase("Success"))
        {
        Intent i = new Intent("com.example.ebharatgas.Activity2");
            i.putExtra("code", t);
            startActivity(i); 
        }
    }
    protected String doInBackground(final String... args)
    {     List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("wblogid", wblogid.getEditableText().toString()));
            nameValuePairs.add(new BasicNameValuePair("wbpasswd", wbpasswd.getEditableText().toString()));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);
            String t = EntityUtils.toString(response.getEntity());

            }
                response = "Success";
        }
            catch(JSONException e)
                {
                    e.printStackTrace();
                }

            return response;
    }
} //Formatting & Code setting required

【讨论】:

  • 为什么是 2 个帖子。您可以编辑以前的帖子并发布和更新
猜你喜欢
  • 1970-01-01
  • 2011-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多