我正在尝试使用Deezer的Android SDK进行搜索。但是,搜索结果始终为空。这是我的做法:

private final static String[] PERMISSIONS = new String[]{};
private DeezerConnect deezerConnect = new DeezerConnectImpl(DEEZER_APP_ID);
RequestListener handler = new CustomDeezerRequestHandler();

// User login
deezerConnect.authorize(MainActivity.this, PERMISSIONS, new MyDialogHandler());

// When the login is completed:
// Search request
DeezerRequest request = new DeezerRequest("/search/artist?q=radiohead");
deezerConnect.requestAsync(request, handler);


API结果:

{"data":[],"total":0}

最佳答案

DeezerRequest对象在给定的API路径上执行几次操作(在您的情况下为“ / search / artist?q = radiohead”)。在这些操作中,查询参数被重置为与Deezer JSON API兼容。

为了在这样的请求中添加您自己的参数,DeezerRequest对象的不同构造函数中提供了一种机制。引用SDK文档:


  公共DeezerRequest(String deezerServicePath,Bundle params)
  
  使用GET方法的DeezerRequest构造函数。
  
  参数:
  
  
  deezerServicePath-服务路径。匹配的网址
  请求减去协议和服务器主机名部分。
  参数-
  传递给服务请求的参数。参数将被添加
  通过获取或发布自动进行。
  


因此,在您的情况下,应使用以下方法创建请求:

    // Search request
    Bundle bundle = new Bundle();
    bundle.putString("q", "radiohead");
    DeezerRequest request = new DeezerRequest("/search/artist", bundle);
    mDeezerConnect.requestAsync(request, this);

09-08 11:57