You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Volley从POST转GET请求API获文章失败,求助获取category_id

Fixing Volley GET Request for Fetching Articles with Category IDs

Hey there! Let's work through this problem together. Switching from POST to GET in Volley mostly boils down to adjusting how you pass your parameters—since GET requests use URL query parameters instead of a request body. Here's how to fix your implementation:

Key Difference Between POST and GET in Volley

Unlike POST, where you’d send category_id in the request body, GET requires appending these parameters directly to your API URL. If you need to fetch posts for multiple category IDs, first check your API’s documentation to confirm the expected format:

  • Repeated parameters: category_id=1&category_id=2
  • Array-style parameters: category_id[]=1&category_id[]=2

Updated getPosts() Method

Here’s a complete, adjusted code example that handles category IDs in a GET request:

public void getPosts() {
    if (refreshed || articleList.size() == 0) {
        swipeContainer.setVisibility(View.GONE);
        loadingPanel.setVisibility(View.VISIBLE);
    }

    // Base API URL (replace with your actual endpoint)
    String baseApiLink = "https://your-api-domain.com/articles";
    StringBuilder apiLinkBuilder = new StringBuilder(baseApiLink);

    // Add category_id parameters (customize based on your API's requirements)
    List<Integer> targetCategoryIds = Arrays.asList(1, 3, 5); // Replace with your actual category IDs
    if (!targetCategoryIds.isEmpty()) {
        apiLinkBuilder.append("?");
        for (int i = 0; i < targetCategoryIds.size(); i++) {
            if (i > 0) apiLinkBuilder.append("&");
            // Use "category_id" or "category_id[]" depending on what your API expects
            apiLinkBuilder.append("category_id=").append(targetCategoryIds.get(i));
        }
    }

    String apiLink = apiLinkBuilder.toString();

    // Create Volley GET request
    StringRequest getRequest = new StringRequest(Request.Method.GET, apiLink,
            response -> {
                // Handle successful response
                loadingPanel.setVisibility(View.GONE);
                swipeContainer.setVisibility(View.VISIBLE);
                // Parse the JSON response into your articleList here
                // ... your existing parsing logic ...
            },
            error -> {
                // Handle request errors
                loadingPanel.setVisibility(View.GONE);
                swipeContainer.setVisibility(View.VISIBLE);
                Log.e("Volley GET Error", error.getMessage() != null ? error.getMessage() : "Unknown error");
            });

    // Add request to Volley queue
    Volley.newRequestQueue(this).add(getRequest);
}

Troubleshooting Tips

If it’s still not working, try these checks:

  • Log the final URL: Add Log.d("Final API URL", apiLink) to confirm the parameter formatting matches what your API expects.
  • Test with Postman: Send the same GET request in Postman first to verify the API returns valid data.
  • Check error details: The onErrorResponse callback will often hint at issues like invalid parameters or missing endpoint permissions.
  • Confirm parameter names: Double-check that category_id matches the exact parameter name your API uses (case-sensitive!).

内容的提问来源于stack exchange,提问作者Ash

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:33:14