404 Файл не найден исключение при вызове ASP. NET webapi - PullRequest
0 голосов
/ 26 января 2020

Когда я пытаюсь POST параметр от android до asp. net web api, я получил файл не найден исключение. Но тот же веб-API работает с почтальоном. Пожалуйста, предложите, в какой части мне нужно исправить?

Android код:

 public String CallWebAPI()
       {

    OkHttpClient client = new OkHttpClient();
    RequestBody formBody = new FormBody.Builder()
            .add("name", "Rahul")
           .build();

    Request request = new Request.Builder()
            .url("http://www.xxxx.co/testapi/TestNameWEBApi")
            .post(formBody)
            .build();

    Call call = client.newCall(request);
           Response response = null;
           try {

               response = call.execute();
               Log.e("ATTEST", "App1 Error is :" + response.toString());

           } catch (IOException e) {
               Log.e("ATTEST", "App1 IOException is :" + e.toString());

               e.printStackTrace();
           }
           return response.toString();
}

И webAPI:

   [RoutePrefix("testapi")]

    [Route("TestNameWEBApi"), HttpPost]
    public HttpResponseMessage TestNameWEBApi(string name)
    {
        try
        {
            var Response = name;
            var Result = this.Request.CreateResponse(HttpStatusCode.OK, Response, new JsonMediaTypeFormatter());
            return Result;//return same parameter to check if the value is reaching here or not
        }
        catch (Exception ex)
        { 
            HttpError Error = new HttpError(ex.Message) { { "IsSuccess", false } };
            return this.Request.CreateErrorResponse(HttpStatusCode.OK, Error);
        }
    }

1 Ответ

0 голосов
/ 28 января 2020

В вашем запросе отсутствует имя параметра запроса .

RequestBody formBody = new FormBody.Builder()
    .add("name", "Rahul")
    .build();

Приведенный выше код добавляет имя и данные в тело, а не в URL.

Вы возможно, вы получаете 404 Not Found , поскольку ваш сервер требует наличия параметра имени, иначе он не будет соответствовать полному маршруту.

Удалите имя и данные из тела, и вместо этого добавьте их в URL.

 public String CallWebAPI() {

 OkHttpClient client = new OkHttpClient();
 RequestBody formBody = new FormBody.Builder()
     .build();

 Request request = new Request.Builder()
     .url("http://www.xxxx.co/testapi/TestNameWEBApi?name=Rahul")
     .post(formBody)
     .build();

 Call call = client.newCall(request);
 Response response = null;
 try {

     response = call.execute();
     Log.e("ATTEST", "App1 Error is :" + response.toString());

 } catch (IOException e) {
     Log.e("ATTEST", "App1 IOException is :" + e.toString());

     e.printStackTrace();
 }
 return response.toString();
}

В этом случае тело полностью пустое, но вы можете добавить его, когда маршрут будет работать.

Вероятно, есть лучший способ добавить параметры запроса в URL, но это должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...