SoundYoung 2013-11-07 06:38 采纳率: 0%
浏览 1099

各位大神帮我解决下安卓用post方法向服务器传值,状态输出以及下面的输出都没有打印

private void postValues (JSONObject param) throws ClientProtocolException, IOException{
String url = "http://app.taosame.com/index.php/user/login.html";
System.out.println(url);
HttpPost request = new HttpPost(url);
// 绑定到请求 Entry
StringEntity se;
se = new StringEntity(param.toString());
System.out.println("StringEntity长度------->"+se.getContentLength());
request.setEntity(se);
System.out.println("是否已经加入道Entity"+se);
// 发送请求
HttpResponse httpResponse = new DefaultHttpClient().execute(request);
System.out.println("状态-s------------------>"+httpResponse.getStatusLine().getStatusCode());
// 得到应答的字符串
String retSrc = EntityUtils.toString(httpResponse.getEntity());
System.out.println("返回值信息------------->"+retSrc);
if(retSrc.equals("error")){
Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_LONG).show();
}
else if (retSrc.equals("error1")){
Toast.makeText(MainActivity.this, "没有该用户", Toast.LENGTH_LONG).show();
}
else if (retSrc.equals("0")) {
Toast.makeText(MainActivity.this, "请输入用户名和密码", Toast.LENGTH_LONG).show();
}
else {
Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
}
// 生成 JSON 对象
//JSONObject result = new JSONObject( retSrc);
//String token = result.get("token");
}

  • 写回答

1条回答 默认 最新

  • ChatGPTᴼᴾᴱᴺᴬᴵ 2024-02-13 17:03
    关注

    所有内容均由人工智能模型输出,其内容的准确性和完整性无法保证,不代表我的态度或观点。


    该回答引用文心大模型4.0,仅提供参考,不保证完全正确
    目前为文心大模型4.0专栏,网页版本:V2.5.3(2024.1.19)
    你的代码看起来大体上是正确的,但可能存在一些问题。首先,你应该确保你的服务器正在运行,并且URL是正确的。然后,你应该检查你的网络权限,确保你的Android应用有权限访问网络。


    另外,你的代码在主线程上执行网络操作,这在Android中是不被允许的。从Android 3.0开始,网络操作不允许在主线程上执行,因为这可能会导致应用界面停止响应。你应该使用异步任务(AsyncTask)或者其他的线程来处理网络请求。


    以下是一个使用AsyncTask来执行你的post请求的示例:

    private class PostTask extends AsyncTask<JSONObject, Void, String> {
        @Override
        protected String doInBackground(JSONObject... params) {
            JSONObject param = params[0];
            String url = "http://app.taosame.com/index.php/user/login.html";
            HttpPost request = new HttpPost(url);
            StringEntity se;
            try {
                se = new StringEntity(param.toString());
                request.setEntity(se);
                HttpResponse httpResponse = new DefaultHttpClient().execute(request);
                System.out.println("状态-s------------------>" + httpResponse.getStatusLine().getStatusCode());
                String retSrc = EntityUtils.toString(httpResponse.getEntity());
                System.out.println("返回值信息------------->" + retSrc);
                return retSrc;
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }
    
        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            if (result != null) {
                if (result.equals("error")) {
                    Toast.makeText(MainActivity.this, "用户名或密码错误", Toast.LENGTH_LONG).show();
                } else if (result.equals("error1")) {
                    Toast.makeText(MainActivity.this, "没有该用户", Toast.LENGTH_LONG).show();
                } else if (result.equals("0")) {
                    Toast.makeText(MainActivity.this, "请输入用户名和密码", Toast.LENGTH_LONG).show();
                } else {
                    Toast.makeText(MainActivity.this, "登陆成功", Toast.LENGTH_LONG).show();
                }
            }
        }
    }
    

    然后你可以像这样调用它:

    JSONObject param = new JSONObject();
    // 设置你的param
    // ...
    new PostTask().execute(param);
    

    请注意,DefaultHttpClient在API级别22中已被弃用。对于新的应用程序,建议使用HttpURLConnection或者第三方网络库,如OkHttp或Retrofit。这些库提供了更好的性能和更简单的API。同时,对于HTTPS请求,DefaultHttpClient也不支持SNI(服务器名称指示),这可能会导致与某些服务器的连接问题。


    图片转文字可能造成误差,不代表模型真实水平

    评论

报告相同问题?

悬赏问题

  • ¥15 交替优化波束形成和ris反射角使保密速率最大化
  • ¥15 树莓派与pix飞控通信
  • ¥15 自动转发微信群信息到另外一个微信群
  • ¥15 outlook无法配置成功
  • ¥30 这是哪个作者做的宝宝起名网站
  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程