客户端代码:
public class RetrofitDemoActivity extends BaseActivity {
private String mUserName;
private String mPassWord;
private EditText mEt_userName;
private EditText mEt_passWord;
final static Gson gson = new GsonBuilder()
.setLenient()
.create();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_net_demo);
initView();
}
private void initView() {
mEt_userName = (EditText) findViewById(R.id.user_name);
mEt_passWord = (EditText) findViewById(R.id.pass_word);
}
public static final String BASE_URL1 = "http://192.168.0.13:8080/RetrofitDemo/";
public void getData(View view) throws IOException {
mUserName = mEt_userName.getText().toString();
mPassWord = mEt_passWord.getText().toString();
OkHttpClient client = new OkHttpClient.Builder()
.addInterceptor(new OkHttpInterceptor())
.build();
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL1)
.addConverterFactory(GsonConverterFactory.create(gson))
.client(client)
.build();
MyEclipseService service = retrofit.create(MyEclipseService.class);
Call<NetData> dataFromMyEclipse = service.getDataFromMyEclipse(mUserName, mPassWord);
Log.d("RetrofitDemoActivity", dataFromMyEclipse.request().url().encodedPath());
dataFromMyEclipse.enqueue(new Callback<NetData>() {
@Override
public void onResponse(Call<NetData> call, Response<NetData> response) {
NetData body = response.body();
Log.d("RetrofitDemoActivity", "body :" + body.toString());
}
@Override
public void onFailure(Call<NetData> call, Throwable t) {
Log.d("RetrofitDemoActivity", t.toString());
}
});
}
private interface MyEclipseService {
@FormUrlEncoded
@POST("servlet/RetrofitServlet")
Call<NetData> getDataFromMyEclipse(@Field("username") String name, @Field("password") String password);
}
}
服务端代码:
public class RetrofitServlet extends HttpServlet {
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//登陆成功标志
String LOGIN_FLAG="";
//获得客户端提交用户名密码
String username = request.getParameter("username");
String password = request.getParameter("password");
//调用UserDAO中isLogin方法判断数据中用户名密码是否正确
System.out.println("username :"+username + "password :" + password);
//setContentType一定要栽getWriter前,否则不会影响输出流编码格式
response.setContentType("application/json;charset=UTF-8");
PrintWriter writer = response.getWriter();
boolean flag = username.equals("abcdef")&&password.equals("123456");
try {
if (flag) {
//登录成功
LOGIN_FLAG="success";
System.out.println(LOGIN_FLAG);
String s = "{id:\"2222\"}";
writer.write(s);
writer.flush();
writer.close();
}else{
//登录失败
LOGIN_FLAG="failure";
System.out.println(LOGIN_FLAG);
String s = "{id:"+"2222"+"}";
writer.write(s);
writer.flush();
writer.close();
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
最后不得不吐槽一下,坑真多- -。