Залп C #, как получить OnResponse? - PullRequest
2 голосов
/ 27 мая 2019

Пожалуйста, дайте мне знать, где мне нужно написать "OnResponse" в C #, используя залп.

Я преобразовал код из студии Android в c #, который использует библиотеку Volley.Затем я открыл код в Xamarin для отправки запроса и получения ответа. Я добавил пакет Volley Nuget (Xamarin.Bindings.Volley).Ниже приведен фрагмент кода преобразованного C #.Однако код не распознает функцию «OnResponse».Мне нужен пример успешной реализации "OnResponse" в C # с использованием Volley.

    public void GetAndPostReqquest(string url, int requestedCode, JSONObject @object, IServerResponse jsonResponse)
    {
        int method = Request.equestMethodConsts.Get;
        switch (requestedCode)
        {
            case POST:
                method = Request.equestMethodConsts.Post;
                break;
            case PUT:
                method = Request.equestMethodConsts.Put;
                break;

        }


        if (!IsInternetAvailable())
        {
            jsonResponse.RequestFinishedWithError(MContext.GetString(App8.Droid.Resource.String.internet_connection_is_not_available));
            return;
        }


        jsonResponse.RequestStarted();


        JsonObjectRequest request = new JsonObjectRequest(method, url, @object, Llistener, EerrorListener) { 

        private void OnResponse(JSONObject response)
        {
            IDictionary<string, string> headers = new Dictionary<string, string>();
            string credentials = UNAME + ":" + PWD;
            string auth = "Basic " + Convert.ToBase64String(credentials.ToCharArray(0, credentials.Length));
            headers["Authorization"] = auth;
            headers["Content-Type"] = "application/json; charset=utf-8";
            //return headers;
        }

    }

1 Ответ

0 голосов
/ 29 мая 2019

Чтобы использовать Volley в своем коде, вам нужно сделать пару небольших изменений.

Сначала я бы предложил вам изменить используемый вами пакет Nugget с Xamarin.Bindings.Volley к Xamarin.Android.Volley .Тот, который вы используете в настоящее время, устарел (2017 год), а тот, который я предлагаю, не только обновлен, но и поддерживается Xamarin, поэтому есть вероятность, что он будет всегда обновляться.

ВActivity там, где выполняется ваш код, вам нужно заставить его реализовать два интерфейса, которые являются частью пространства имен Volley, это: Response.IListener и Response.IErrorListener

Он должен выглядеть следующим образом:

public class MainActivity : Activity, Response.IListener, Response.IErrorListener

Для этого потребуется завершить реализацию этих интерфейсов, добавив два метода: public void OnErrorResponse(VolleyError p0) и public void OnResponse(Object p0) в Activity class

ВМетод OnResponse - это то место, где вы собираетесь добавить свою логику.

Вам нужно будет привести Object, полученный в OnResponse, к JSONObject объекту, прежде чем использовать его.

Определение Activity позже должно выглядеть так:

public class MainActivity : Activity, Response.IListener, Response.IErrorListener
{
    public void OnErrorResponse(VolleyError p0)
    {
    }

    public void OnResponse(Object p0)
    {
        if(p0 is JSONObject response)
        {
            // Do your logic here with response
        }
    }

   /......

}

Ваш запрос будет обновлен следующим образом:

JsonObjectRequest request = new JsonObjectRequest(method, url, @object, this, this);

Надеюсь, это поможет .-

...