改造 404 未找到网站 api
Retrofit 404 not found web api
我有一个网站 api 和一个应用程序。所以我想注册一个应用程序,但我遇到了问题。我用的是蔚蓝。
有我的registerapi(接口)
@FormUrlEncoded
@POST("/application/json")
public void insertUser(
@Field("Username") String Username,
@Field("Password") String Password,
@Field("Email") String Email,
Callback<Response> callback);
和我的 mainactivty.java 页面
public class MainActivity extends AppCompatActivity {
private EditText editTextUsername;
private EditText editTextPassword;
private EditText editTextEmail;
private Button buttonRegister;
final public static String ROOT_URL = "http://bsapmusic.azurewebsites.net/api/music/register";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextUsername = (EditText) findViewById(R.id.etusername);
editTextPassword = (EditText) findViewById(R.id.etpassword);
editTextEmail = (EditText) findViewById(R.id.etmail);
buttonRegister = (Button) findViewById(R.id.btnkayit);
buttonRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
insertUser();
}
});
}
private void insertUser()
{
RestAdapter adapter =new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
RegisterAPI api = adapter.create(RegisterAPI.class);
api.insertUser(
editTextUsername.getText().toString(),
editTextPassword.getText().toString(),
editTextEmail.getText().toString(),
new Callback<Response>() {
@Override
public void success(Response result, Response response) {
BufferedReader reader = null;
String output = "";
try{
reader=new BufferedReader(new InputStreamReader(result.getBody().in()));
output=reader.readLine();
}
catch (IOException e){
e.printStackTrace();
}
Toast.makeText(MainActivity.this,output,Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(MainActivity.this, error.toString(),Toast.LENGTH_LONG).show();
}
});
};
然后我得到 retrofit 404 not found。
假设 http://bsapmusic.azurewebsites.net/api/music/register
是 url 到您 API 中的注册方法:
A 404 表示没有 API 这个 url。
你的基础url是http://bsapmusic.azurewebsites.net/api/music/register
在此 baseurl 之后,将附加 @post 内的路径。这将导致 url:http://bsapmusic.azurewebsites.net/api/music/register/application/json
。
你注册方法的url可能是第一个url。
baseurl 应该是 url 到 api 的根 url,在你的情况下这可能是:http://bsapmusic.azurewebsites.net/api/
。在@GET、@POST、@PUT 中,您将路径设置为特定的api 方法。在你的情况下,那将是 @POST("music/register")
。您没有在此处设置发送到 API 的数据类型。
我有一个网站 api 和一个应用程序。所以我想注册一个应用程序,但我遇到了问题。我用的是蔚蓝。 有我的registerapi(接口)
@FormUrlEncoded
@POST("/application/json")
public void insertUser(
@Field("Username") String Username,
@Field("Password") String Password,
@Field("Email") String Email,
Callback<Response> callback);
和我的 mainactivty.java 页面
public class MainActivity extends AppCompatActivity {
private EditText editTextUsername;
private EditText editTextPassword;
private EditText editTextEmail;
private Button buttonRegister;
final public static String ROOT_URL = "http://bsapmusic.azurewebsites.net/api/music/register";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextUsername = (EditText) findViewById(R.id.etusername);
editTextPassword = (EditText) findViewById(R.id.etpassword);
editTextEmail = (EditText) findViewById(R.id.etmail);
buttonRegister = (Button) findViewById(R.id.btnkayit);
buttonRegister.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
insertUser();
}
});
}
private void insertUser()
{
RestAdapter adapter =new RestAdapter.Builder().setEndpoint(ROOT_URL).build();
RegisterAPI api = adapter.create(RegisterAPI.class);
api.insertUser(
editTextUsername.getText().toString(),
editTextPassword.getText().toString(),
editTextEmail.getText().toString(),
new Callback<Response>() {
@Override
public void success(Response result, Response response) {
BufferedReader reader = null;
String output = "";
try{
reader=new BufferedReader(new InputStreamReader(result.getBody().in()));
output=reader.readLine();
}
catch (IOException e){
e.printStackTrace();
}
Toast.makeText(MainActivity.this,output,Toast.LENGTH_LONG).show();
}
@Override
public void failure(RetrofitError error) {
Toast.makeText(MainActivity.this, error.toString(),Toast.LENGTH_LONG).show();
}
});
};
然后我得到 retrofit 404 not found。
假设 http://bsapmusic.azurewebsites.net/api/music/register
是 url 到您 API 中的注册方法:
A 404 表示没有 API 这个 url。
你的基础url是http://bsapmusic.azurewebsites.net/api/music/register
在此 baseurl 之后,将附加 @post 内的路径。这将导致 url:http://bsapmusic.azurewebsites.net/api/music/register/application/json
。
你注册方法的url可能是第一个url。
baseurl 应该是 url 到 api 的根 url,在你的情况下这可能是:http://bsapmusic.azurewebsites.net/api/
。在@GET、@POST、@PUT 中,您将路径设置为特定的api 方法。在你的情况下,那将是 @POST("music/register")
。您没有在此处设置发送到 API 的数据类型。