/*
* Copyright 2015 Yan Zhenjie
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.yanzhenjie.nohttp.sample.activity;
import android.os.Bundle;
import android.support.v7.widget.RecyclerView;
import com.yanzhenjie.nohttp.sample.R;
import com.yanzhenjie.nohttp.sample.adapter.RecyclerListMultiAdapter;
import com.yanzhenjie.nohttp.sample.entity.ListItem;
import com.yanzhenjie.nohttp.sample.nohttp.HttpListener;
import com.yanzhenjie.nohttp.sample.util.Constants;
import com.yanzhenjie.nohttp.sample.util.OnItemClickListener;
import com.yanzhenjie.nohttp.NoHttp;
import com.yanzhenjie.nohttp.RequestMethod;
import com.yanzhenjie.nohttp.rest.Request;
import com.yanzhenjie.nohttp.rest.Response;
import java.util.ArrayList;
import java.util.List;
import java.util.Locale;
import butterknife.BindArray;
import butterknife.ButterKnife;
/**
* <p>演示各种请求方法Demo.<p>
* Created in Oct 23, 2015 1:13:06 PM.
*
* @author Yan Zhenjie.
*/
public class MethodActivity extends BaseActivity {
@BindArray(R.array.activity_method_item)
String[] titles;
@BindArray(R.array.activity_method_item_des)
String[] titlesDes;
@Override
protected void onActivityCreate(Bundle savedInstanceState) {
setContentView(R.layout.activity_method);
ButterKnife.bind(this);
List<ListItem> listItems = new ArrayList<>();
for (int i = 0; i < titles.length; i++) {
listItems.add(new ListItem(titles[i], titlesDes[i]));
}
RecyclerListMultiAdapter listAdapter = new RecyclerListMultiAdapter(listItems, mItemClickListener);
RecyclerView recyclerView = ButterKnife.findById(this, R.id.rv_method_activity);
recyclerView.setAdapter(listAdapter);
}
private OnItemClickListener mItemClickListener = (v, position) -> request(position);
/**
* @param position
*/
private void request(int position) {
Request<String> request = null;
switch (position) {
case 0:
showMessageDialog(R.string.method_request_failed, R.string.method_request_failed_reason);
break;
case 1:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.GET);
break;
case 2:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.POST);
break;
case 3:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.PUT);
break;
case 4:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.DELETE);
break;
case 5:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.HEAD);
break;
case 6:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.PATCH);
break;
case 7:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.OPTIONS);
break;
case 8:
request = NoHttp.createStringRequest(Constants.URL_NOHTTP_METHOD, RequestMethod.TRACE);
break;
default:
break;
}
if (request != null) {
request.add("name", "yanzhenjie");// String类型
request.add("pwd", 123);
request.add("userAge", 20);// int类型
request.add("userSex", '1');// char类型,还支持其它类型
// // 添加到请求队列
request(0, request, httpListener, true, true);
}
}
private HttpListener<String> httpListener = new HttpListener<String>() {
@Override
public void onSucceed(int what, Response<String> response) {
if (response.getHeaders().getResponseCode() == 501) {
showMessageDialog(R.string.request_succeed, R.string.request_method_patch);
} else if (RequestMethod.HEAD == response.request().getRequestMethod())// 请求方法为HEAD时没有响应内容
showMessageDialog(R.string.request_succeed, R.string.request_method_head);
else if (response.getHeaders().getResponseCode() == 405) {
List<String> allowList = response.getHeaders().getValues("Allow");
String allow = getString(R.string.request_method_not_allow);
if (allowList != null && allowList.size() > 0) {
allow = String.format(Locale.getDefault(), allow, allowList.get(0));
}
showMessageDialog(R.string.request_succeed, allow);
} else
showMessageDialog(R.string.request_succeed, response.get());
}
@Override
public void onFailed(int what, Response<String> response) {
showMessageDialog(R.string.request_failed, response.getException().getMessage());
}
};
}