Uber的Get /v1.2/products API允许开发者获取特定位置可用的Uber产品类型(如UberX、UberBlack等)及其详细信息。这是一个RESTful API,需要认证才能访问。
在build.gradle中添加网络库依赖:
implementation 'com.squareup.okhttp3:okhttp:4.9.3'
implementation 'com.google.code.gson:gson:2.8.9'
import okhttp3.OkHttpClient;
import okhttp3.Request;
import okhttp3.Response;
import org.json.JSONObject;
import java.io.IOException;
public class UberApiClient {
private static final String BASE_URL = "https://api.uber.com/v1.2";
private static final String SERVER_TOKEN = "YOUR_SERVER_TOKEN"; // 替换为你的token
private OkHttpClient client;
public UberApiClient() {
client = new OkHttpClient();
}
public JSONObject getProducts(double latitude, double longitude) throws IOException {
String url = BASE_URL + "/products?latitude=" + latitude + "&longitude=" + longitude;
Request request = new Request.Builder()
.url(url)
.addHeader("Authorization", "Token " + SERVER_TOKEN)
.addHeader("Accept-Language", "en_US")
.addHeader("Content-Type", "application/json")
.build();
try (Response response = client.newCall(request).execute()) {
if (!response.isSuccessful()) throw new IOException("Unexpected code " + response);
String responseData = response.body().string();
return new JSONObject(responseData);
}
}
}
public class MainActivity extends AppCompatActivity {
private static final String TAG = "UberApiExample";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new FetchProductsTask().execute(37.7753, -122.418); // 示例坐标(旧金山)
}
private class FetchProductsTask extends AsyncTask<Double, Void, JSONObject> {
@Override
protected JSONObject doInBackground(Double... params) {
UberApiClient client = new UberApiClient();
try {
return client.getProducts(params[0], params[1]);
} catch (IOException e) {
Log.e(TAG, "Error fetching Uber products", e);
return null;
}
}
@Override
protected void onPostExecute(JSONObject result) {
if (result != null) {
try {
// 解析响应数据
JSONArray products = result.getJSONArray("products");
for (int i = 0; i < products.length(); i++) {
JSONObject product = products.getJSONObject(i);
String name = product.getString("display_name");
String description = product.getString("description");
Log.d(TAG, "Product: " + name + " - " + description);
}
} catch (Exception e) {
Log.e(TAG, "Error parsing response", e);
}
}
}
}
}
Authorization: Token YOUR_SERVER_TOKEN
<uses-permission android:name="android.permission.INTERNET" />
通过以上实现,你可以在Android应用中成功集成Uber的产品API,获取特定位置可用的Uber服务信息。
没有搜到相关的文章