使用官網提供的樣例代碼,死活獲取不到任何資料?麻煩各位大佬們幫我看看,是代碼有問題還是目前暫時不能獲取
ExampleRequest.java
import com.android.volley.AuthFailureError;
import com.android.volley.NetworkResponse;
import com.android.volley.ParseError;
import com.android.volley.Response;
import com.android.volley.toolbox.HttpHeaderParser;
import com.android.volley.toolbox.JsonRequest;
import com.google.gson.JsonSyntaxException;
import net.oauth.OAuth;
import net.oauth.OAuthAccessor;
import net.oauth.OAuthConsumer;
import net.oauth.OAuthException;
import net.oauth.OAuthMessage;
import java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URISyntaxException;
import java.util.HashMap;
import java.util.Map;
public class ExampleRequest<T> extends JsonRequest<T> {
final String appId = "aGMrrF4c";
final String CONSUMER_KEY = "dj0yJmk9ZGM1eW1CQmFxelVDJmQ9WVdrOVlVZE5jbkpHTkdNbWNHbzlNQS0tJnM9Y29uc3VtZXJzZWNyZXQmc3Y9MCZ4PWFk";
final String CONSUMER_SECRET = "29bb41285bb99214a0366f3b7b401dc941d9baf9";
final String baseUrl = "https://weather-ydn-yql.media.yahoo.com/forecastrss";
public ExampleRequest(int method, String url, String requestBody, Response.Listener<T> listener, Response.ErrorListener errorListener) {
super(method, url, requestBody, listener, errorListener);
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = new HashMap<>();
OAuthConsumer consumer = new OAuthConsumer(null, CONSUMER_KEY, CONSUMER_SECRET, null);
consumer.setProperty(OAuth.OAUTH_SIGNATURE_METHOD, OAuth.HMAC_SHA1);
OAuthAccessor accessor = new OAuthAccessor(consumer);
try {
OAuthMessage request = accessor.newRequestMessage(OAuthMessage.GET, getUrl(), null);
String authorization = request.getAuthorizationHeader(null);
headers.put("Authorization", authorization);
} catch (OAuthException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (URISyntaxException e) {
e.printStackTrace();
}
headers.put("X-Yahoo-App-Id", appId);
headers.put("Content-Type", "application/json");
return headers;
}
@Override
public String getUrl() {
return baseUrl + "?location=sunnyvale,ca&format=json";
}
@Override
protected Response<T> parseNetworkResponse(NetworkResponse response) {
try {
String json = new String(response.data, HttpHeaderParser.parseCharset(response.headers));
T parsedResponse = parseResponse(json);
return Response.success(parsedResponse, HttpHeaderParser.parseCacheHeaders(response));
} catch (UnsupportedEncodingException | JsonSyntaxException e) {
return Response.error(new ParseError(e));
}
}
protected T parseResponse(String jsonObject) {
return null; // Add response parsing here
}
ExampleRequestManager.java
import android.content.Context;
import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.Volley;
public class ExampleRequestManager {
private static ExampleRequestManager sInstance;
Context mContext;
RequestQueue mRequestQueue;
public static synchronized ExampleRequestManager getInstance(Context context) {
if (sInstance == null) {
sInstance = new ExampleRequestManager(context);
}
return sInstance;
}
private ExampleRequestManager(Context context) {
mContext = context;
mRequestQueue = Volley.newRequestQueue(mContext);
}
public <T> void addToRequestQueue(Request<T> request) {
mRequestQueue.add(request);
}
}
MainActivity
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.TextView;
import android.widget.Toast;
import com.android.volley.AuthFailureError;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
public class MainActivity extends AppCompatActivity {
private TextView tv;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv = findViewById(R.id.tv);
}
@Override
public void onStart() {
final ExampleRequestManager requestManager = ExampleRequestManager.getInstance(this);
final ExampleRequest request = new ExampleRequest(Request.Method.GET, null, null, new Response.Listener() {
@Override
public void onResponse(Object response) {
// Add success logic here
Toast.makeText(MainActivity.this, "成功獲取"+ response , Toast.LENGTH_SHORT).show();
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
// Add error handling here
Toast.makeText(MainActivity.this, "錯誤" + error.getMessage() + error.getCause(), Toast.LENGTH_SHORT).show();
}
});
requestManager.addToRequestQueue(request);
super.onStart();
try {
tv.setText(request.getHeaders() + "\n" );
} catch (AuthFailureError authFailureError) {
authFailureError.printStackTrace();
}
}
}
已增加網路權限
<uses-permission android:name="android.permission.INTERNET"/>
匯入的包
implementation 'net.oauth.core:oauth:20100527'
implementation 'net.oauth.core:oauth-consumer:20100527'
implementation 'com.mcxiaoke.volley:library:1.0.+'
implementation 'com.google.code.gson:gson:2.6.2'
uj5u.com熱心網友回復:
你先看看請求回傳的錯誤資訊是什么,確認你的配置是否正確uj5u.com熱心網友回復:
回傳的是null,請問是否和雅虎上create application中的 Redirect URI(s)(Required)有關?此處我填寫的是https://www.baidu.com
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/61280.html
標籤:Android
上一篇:請問這是哪個軟體?又沒人知道的?
下一篇:微信小程式加速度測驗工具
