Android 连接到RESTful api
我需要帮助才能连接到此api 这是一份文件: 该网站的例子是在php,我不明白 我有公钥和私钥 请帮我接通 我试过了Android 连接到RESTful api,android,api,rest,Android,Api,Rest,我需要帮助才能连接到此api 这是一份文件: 该网站的例子是在php,我不明白 我有公钥和私钥 请帮我接通 我试过了 url = "http://www.jazzradio.fr/api/news" List<NameValuePair> params = new ArrayList<NameValuePair>(); params.add(new BasicNameValuePair("limit", "20")); p
url = "http://www.jazzradio.fr/api/news"
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("limit", "20"));
params.add(new BasicNameValuePair("private_key ", "***"));
JSONObject json = jParser.makeHttpRequest(url, "GET", params);
url=”http://www.jazzradio.fr/api/news"
List params=new ArrayList();
参数添加(新的BasicNameValuePair(“限制”,“20”));
添加参数(新的BasicNameValuePair(“私钥”、“***”);
JSONObject json=jParser.makeHttpRequest(url,“GET”,参数);
这是真的吗?老派是这样的:(截击没有问题)
使用截击:
在MainActivity.java中的OnCreate()、OnStart()或OnResume()中,具体取决于应用程序:
private void getClientResource() {
final RequestQueue mRequestQueue = Volley.newRequestQueue(this);
Resources resources = getResources();
URL url = null;
try {
url = new URL(resources.getString(R.string.your_url_here));
}
catch (MalformedURLException e) {
e.printStackTrace();
}
final String urlString = url.toString();
final Response.Listener<JSONObject> responseListener = new Response.Listener<JSONObject>() {
@Override
public void onResponse(JSONObject response) {
VolleyLog.v("Response: %s", response.toString());
// parse JSON response here
}
};
final Response.ErrorListener errorListener = new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
VolleyLog.e("Error.Response: %s", error.toString());
Log.e("Error.Response: %s", error.toString());
if(error instanceof NoConnectionError) {
Toast.makeText(mActivity, "No internet available", Toast.LENGTH_SHORT).show();
}
else if(error instanceof ServerError) {
Toast.makeText(mActivity, "Invalid username/password", Toast.LENGTH_SHORT).show();
}
else if(error instanceof AuthFailureError) {
Toast.makeText(mActivity, "AuthFailureError", Toast.LENGTH_SHORT).show();
}
else if(error instanceof NetworkError) {
Toast.makeText(mActivity, "NetworkError", Toast.LENGTH_SHORT).show();
}
else if(error instanceof ParseError) {
Toast.makeText(mActivity, "ParseError: ", Toast.LENGTH_SHORT).show();
}
else if(error instanceof VolleyError) {
Toast.makeText(mActivity, "VolleyError", Toast.LENGTH_SHORT).show();
}
else if(error instanceof TimeoutError) {
Toast.makeText(mActivity, "TimeoutError", Toast.LENGTH_SHORT).show();
}
else {
Toast.makeText(mActivity, "Error: " + error, Toast.LENGTH_SHORT).show();
}
}
};
TaskJsonObjectRequest jsObjRequest = new TaskJsonObjectRequest(Request.Method.GET,
urlString,
null,
responseListener,
errorListener);
mRequestQueue.add(jsObjRequest);
}
private void getClientResource(){
final RequestQueue mRequestQueue=Volley.newRequestQueue(this);
Resources=getResources();
URL=null;
试一试{
url=新url(resources.getString(R.string.your_url_here));
}
捕获(格式错误){
e、 printStackTrace();
}
最后一个字符串urlString=url.toString();
final Response.Listener responseListener=new Response.Listener(){
@凌驾
公共void onResponse(JSONObject响应){
v(“响应:%s”,Response.toString());
//在这里解析JSON响应
}
};
final Response.ErrorListener ErrorListener=新的Response.ErrorListener(){
@凌驾
公共无效onErrorResponse(截击错误){
e(“Error.Response:%s”,Error.toString());
Log.e(“Error.Response:%s”,Error.toString());
if(错误实例of NoConnectionError){
Toast.makeText(mActivity,“没有可用的互联网”,Toast.LENGTH_SHORT.show();
}
else if(服务器错误实例){
Toast.makeText(mActivity,“无效用户名/密码”,Toast.LENGTH_SHORT.show();
}
else if(AuthFailureError的错误实例){
Toast.makeText(mActivity,“AuthFailureError”,Toast.LENGTH_SHORT.show();
}
else if(网络错误实例error){
Toast.makeText(mActivity,“NetworkError”,Toast.LENGTH_SHORT.show();
}
else if(error instanceof ParseError){
Toast.makeText(mActivity,“ParseError:”,Toast.LENGTH_SHORT.show();
}
else if(截击错误的错误实例){
Toast.makeText(mActivity,“截击错误”,Toast.LENGTH_SHORT.show();
}
else if(TimeoutError的错误实例){
Toast.makeText(mActivity,“TimeoutError”,Toast.LENGTH_SHORT.show();
}
否则{
Toast.makeText(mActivity,“Error:+Error,Toast.LENGTH_SHORT).show();
}
}
};
TaskJsonObjectRequest jsObjRequest=新TaskJsonObjectRequest(Request.Method.GET,
URL字符串,
无效的
负责人,
错误监听器);
mRequestQueue.add(jsObjRequest);
}
TaskJsonObjectRequest.java
import android.util.Base64;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class TaskJsonObjectRequest extends JsonObjectRequest {
public TaskJsonObjectRequest(int requestMethod,
String url,
JSONObject jsonRequest,
Response.Listener<JSONObject> listener,
Response.ErrorListener errorListener) {
super(requestMethod,
url, //String url,
jsonRequest, // JSONObject ,
listener, // Response.Listener<JSONObject> ,
errorListener); // Response.ErrorListener errorListener)
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
String auth = "Basic " + Base64.encodeToString(("yi_z:secret").getBytes(), Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
}
导入android.util.Base64;
导入com.android.volley.AuthFailureError;
导入com.android.volley.Response;
导入com.android.volley.toolbox.JsonObjectRequest;
导入org.json.JSONObject;
导入java.util.HashMap;
导入java.util.Map;
公共类TaskJsonObjectRequest扩展了JsonObjectRequest{
公共任务JSONObjectRequest(int requestMethod,
字符串url,
JSONObject jsonRequest,
回应,听众,
Response.ErrorListener(错误监听器){
超级方法,
url,//字符串url,
jsonRequest,//JSONObject,
侦听器,//Response.listener,
errorListener);//Response.errorListener errorListener)
}
@凌驾
公共映射getHeaders()引发AuthFailureError{
Map headers=newhashmap();
字符串auth=“Basic”+Base64.encodeToString((“yi_z:secret”).getBytes(),Base64.NO_WRAP);
headers.put(“授权”,auth);
返回标题;
}
}
use volley for rest api是volley做每件事并连接到此api吗?是的,volley是Google library for rest api,您需要调用一些方法使其工作我很抱歉,但是如何在volley中发送公钥和私钥进行身份验证响应是:{“error”:{“code”:401,“title”:“Unauthorized#0”}
您指什么“没有工作”?它是否进入HTTP_STATUS_OK if语句中?>您可能需要添加导入语句。我已经在上面添加了它们。可能还有更多,您需要搜索。
import android.util.Base64;
import com.android.volley.AuthFailureError;
import com.android.volley.Response;
import com.android.volley.toolbox.JsonObjectRequest;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class TaskJsonObjectRequest extends JsonObjectRequest {
public TaskJsonObjectRequest(int requestMethod,
String url,
JSONObject jsonRequest,
Response.Listener<JSONObject> listener,
Response.ErrorListener errorListener) {
super(requestMethod,
url, //String url,
jsonRequest, // JSONObject ,
listener, // Response.Listener<JSONObject> ,
errorListener); // Response.ErrorListener errorListener)
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<String, String>();
String auth = "Basic " + Base64.encodeToString(("yi_z:secret").getBytes(), Base64.NO_WRAP);
headers.put("Authorization", auth);
return headers;
}
}