Android(Retrofit2)+Tomcat+mysql 第二次测试

上篇博文的通讯方式采用的是httpclient,通讯的确是可以,但是目前用到json格式往sql里传数据的时候出现了问题:写json格式需要jar包,其中一个包是commons-collections-3.2.1.jar,导入之后出现错误:

也就是apache出现重复包。

查完资料才知道 httpclient已经被android抛弃,,apache出现重复包很常见。所以在android机上改用Retrofit2协议。并且不用单独考虑json,已经集成了gson,网络请求一步到位。

参考博文:https://www.jianshu.com/p/27ccb943693f

以下是android的访问tomcat示意代码,仍是查询代码,tomcat端不用修改:


public class MainActivity extends Activity implements View.OnClickListener{
    public static final int SHOW_RESPONSE=1;
    private static EditText uid,pwd;
    private static Button button;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        uid=this.findViewById(R.id.username);
        pwd=this.findViewById(R.id.password);
        button=this.findViewById(R.id.Login);
        button.setOnClickListener(this);
    }

     public void onClick(View v){
        switch (v.getId()){
            case R.id.Login:
                login();
                break;
        }
     }

     public void login(){
         String id=uid.getText().toString().trim();
         String pw=pwd.getText().toString().trim();

         Retrofit retrofit=new Retrofit.Builder()
                 .baseUrl("http://192.168.0.109/")
                 .build();
         Demo demo=retrofit.create(Demo.class);
         Call<ResponseBody>data=demo.doLogin(id,pw);
         data.enqueue(new Callback<ResponseBody>() {
             @Override
             public void onResponse(Call<ResponseBody> call, Response<ResponseBody> response) {
                 try{
                     Log.i("TAG------>response", response.body().string());
                 }catch (IOException e){
                     e.printStackTrace();
                 }
             }
             @Override
             public void onFailure(Call<ResponseBody> call, Throwable t) {
                 Log.i("TAG", "请求失败: " + t);
             }
         });
     }

    interface Demo {
        @FormUrlEncoded
        @POST("/MyTest/Login")
        Call<ResponseBody>doLogin(@Field("ID") String ID,@Field("PW") String PW);
    }
}

以上在虚拟机上测试可以,在真机上测试出现问题:

 java.net.UnknownServiceException: CLEARTEXT communication to 192.168.0.109 not permitted by network 

参考博文:https://blog.csdn.net/cy123cy456cy/article/details/94715318

添加xml文件并且在AndroidManifest.xml中修改即可成功。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值