改造返回 404 未找到
retrofit is returning 404 not found
这是我的 class 调用改造的地方。
public class Prelist_fragment extends ListActivity {
String API = "http://nisani.net/nisani hoarding/";
String tag;
Datum datum;
private ArrayList<String> stores = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(tag, "in oncreate of prelist");
retro();
}
void retro(){
Log.e(tag, "inside retro");
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API).build(); //create an adapter for retrofit with base url
gitapi git = restAdapter.create(gitapi.class);
git.getStores("hij",new Callback<PreStoreResponse>() {
@Override
public void success(PreStoreResponse preStoreResponse, Response response) {
stores.add(datum.getStore());
TextView tView = new TextView(Prelist_fragment.this);
getListView().addHeaderView(tView);
setListAdapter(new ArrayAdapter<String>(Prelist_fragment.this,
R.layout.activity_prelist_fragment,stores));
getListView().setTextFilterEnabled(true);
}
@Override
public void failure(RetrofitError error) {
Log.e(tag, "inside retro error"+error.getUrl()+" "+error.getMessage());
if (error.isNetworkError()) {
Log.e(tag,"network error"); // Use another code if you'd prefer
}
}
});
}
这是我的界面。
public interface gitapi {
/* GET LIST*/
@GET("/pre_report.php") //a function in your api to get all the list
public void getStores(@Query("roll")String a,Callback<PreStoreResponse> response);
}
当我尝试这个时,它显示 404 未找到。 url 是正确的,我检查过了。响应是在改造失败时进行,而不是在成功时进行。
我的第一个猜测是 Retrofit 失败是因为端点 URL.
中的 space
将其输入浏览器时,浏览器会自动将 space 转换为它随后可以理解的“%20”。我不确定 Retrofit 能否做到这一点。 Retrofit 可能只是删除 space,将原来的 URL 转换为“http://nisani.net/nisanihoarding/”,这显然会产生 404 错误。
尝试将端点 URL 更改为:
http://nisani.net/nisani%20hoarding/
这是我的 class 调用改造的地方。
public class Prelist_fragment extends ListActivity {
String API = "http://nisani.net/nisani hoarding/";
String tag;
Datum datum;
private ArrayList<String> stores = new ArrayList<String>();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.e(tag, "in oncreate of prelist");
retro();
}
void retro(){
Log.e(tag, "inside retro");
RestAdapter restAdapter = new RestAdapter.Builder()
.setEndpoint(API).build(); //create an adapter for retrofit with base url
gitapi git = restAdapter.create(gitapi.class);
git.getStores("hij",new Callback<PreStoreResponse>() {
@Override
public void success(PreStoreResponse preStoreResponse, Response response) {
stores.add(datum.getStore());
TextView tView = new TextView(Prelist_fragment.this);
getListView().addHeaderView(tView);
setListAdapter(new ArrayAdapter<String>(Prelist_fragment.this,
R.layout.activity_prelist_fragment,stores));
getListView().setTextFilterEnabled(true);
}
@Override
public void failure(RetrofitError error) {
Log.e(tag, "inside retro error"+error.getUrl()+" "+error.getMessage());
if (error.isNetworkError()) {
Log.e(tag,"network error"); // Use another code if you'd prefer
}
}
});
}
这是我的界面。
public interface gitapi {
/* GET LIST*/
@GET("/pre_report.php") //a function in your api to get all the list
public void getStores(@Query("roll")String a,Callback<PreStoreResponse> response);
}
当我尝试这个时,它显示 404 未找到。 url 是正确的,我检查过了。响应是在改造失败时进行,而不是在成功时进行。
我的第一个猜测是 Retrofit 失败是因为端点 URL.
中的 space将其输入浏览器时,浏览器会自动将 space 转换为它随后可以理解的“%20”。我不确定 Retrofit 能否做到这一点。 Retrofit 可能只是删除 space,将原来的 URL 转换为“http://nisani.net/nisanihoarding/”,这显然会产生 404 错误。
尝试将端点 URL 更改为:
http://nisani.net/nisani%20hoarding/