gpt4 book ai didi

java - 如何将 GET 参数传递给 Retrofit 请求

转载 作者:行者123 更新时间:2023-11-29 09:46:55 24 4
gpt4 key购买 nike

我正在使用 SoundCloud api 创建一个应用程序并尝试附加用户输入的字符串值,但它在界面中显示为 null 我如何将其附加到 url 中?

主 Activity .java

  b.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View p1)
{
// TODO: Implement this method
search = et.getText().toString();
Log.d("search",search);
Intent i = new Intent(MainActivity.this, SoundCloud.class);
i.putExtra("mysearch", search);
startActivity(i);

Log.d("CustomUrl",SCService.CustomUrl);
Toast.makeText(MainActivity.this,""+SCService.CustomUrl,Toast.LENGTH_SHORT).show();


Retrofit retrofit = new Retrofit.Builder()
.baseUrl(Config.API_URL)
.addConverterFactory(GsonConverterFactory.create()).build();

SCService Scservice = retrofit.create(SCService.class);
Call<Track> call = Scservice.getTrack(search);
call.enqueue(new Callback<Track>(){

@Override
public void onResponse(Call<Track> call, Response<Track> response)
{
// TODO: Implement this method
if (response.isSuccessful())
{
Track track = response.body();
streamUrl = track.getStreamUrl();
trackname = track.getTitle();
Log.e("track", track.getTitle());
Toast.makeText(MainActivity.this, trackname, Toast.LENGTH_SHORT).show();
Toast.makeText(MainActivity.this, "url" + streamUrl, Toast.LENGTH_SHORT).show();
//addToList(trackname);
}
}

@Override
public void onFailure(Call<Track> p1, Throwable p2)
{
// TODO: Implement this method
Toast.makeText(MainActivity.this,"error"+p2.getMessage(),Toast.LENGTH_SHORT).show();
//showMessage("Network Error: " + p2.getMessage());
Log.d("error", p2.getMessage());
}
});

}
});

服务.java

public interface SCService
{
public String CustomUrl = Config.API_URL+"/resolve.json?url="+SoundCloud.SCURL+"&client_id="+Config.CLIENT_ID;
@GET("/resolve.json?url={SCURL}"+"&client_id="+Config.CLIENT_ID)
Call<Track> getTrack(@Path("SCURL")String SCURL);
}

搜索到的字符串在我的 SoundCloud.java 类中

    SCURL = receivedmsg.getString("mysearch");
Log.d("intentdata",SCURL);

tv.setText("Search Results for " + SCURL);

我想在 GET 参数中附加 SCURL 字符串,但它显示 SCURL 为空值,我该如何实现?

更新:我已经按照上面的方法更改了我的代码,但出现了这个错误

enter code here
03-15 13:22:14.866 6149 6149 D search com.sk.scdoenloader /https://m.soundcloud.com/dharmaworldwide/houseofcards-mixmaster-05b
03-15 13:22:14.967 6149 6149 D CustomUrl com.sk.scdoenloader https://api.soundcloud.com/resolve.json?url=null&client_id=iZIs9mchVcX5lhVRyQGGAYlNPVldzAoX
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader FATAL EXCEPTION: main
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader Process: com.sk.scdoenloader, PID: 6149
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader java.lang.IllegalArgumentException: No Retrofit annotation found. (parameter #1)
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader for method SCService.getTrack
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:720)
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader at retrofit2.ServiceMethod$Builder.methodError(ServiceMethod.java:711)
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader at retrofit2.ServiceMethod$Builder.parameterError(ServiceMethod.java:729)
03-15 13:22:15.299 6149 6149 E AndroidRuntime com.sk.scdoenloader

最佳答案

你必须在这里使用@Path

@GET("/resolve.json?url={url}&client_id={clientId}")
Call<Track> getTrack(@Path("url") String url,@Path("clientId") String clientId);

关于java - 如何将 GET 参数传递给 Retrofit 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49293354/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com