C#凌空如何获得OnResponse?

时间:2019-05-27 18:52:18

标签: c# visual-studio xamarin xamarin.android android-volley

请让我知道我需要在哪里使用Volley在C#中编写“ OnResponse”。

我将代码从Android studio转换为使用Volley库的c#。然后在Xamarin中打开代码以发送请求并接收响应。我添加了Volley Nuget包(Xamarin.Bindings.Volley)。 以下是转换后的C#的代码段。但是,该代码无法识别“ OnResponse”功能。我需要一个使用Volley在c#中成功实现“ OnResponse”实现的示例。

    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 :(得分:0)

要在代码上使用Volley,您需要做一些小改动。

首先,我建议您将使用的Nugget程序包从 Xamarin.Bindings.Volley 更改为 Xamarin.Android.Volley 。您当前使用的是过时的(2017),我建议您使用的不仅是最新的,而且还由Xamarin进行维护,因此很有可能会始终进行更新。

在执行代码的Activity中,您需要使其实现属于Volley名称空间一部分的两个接口,分别是:Response.IListener和{{1} }

它应该像这样:

Response.IErrorListener

这将要求您通过向 Activity

添加两个方法:public class MainActivity : Activity, Response.IListener, Response.IErrorListener public void OnErrorResponse(VolleyError p0)来完成这些接口的实现。

public void OnResponse(Object p0)方法中,您将要添加逻辑。

在使用它之前,您需要将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
        }
    }

   /......

}

希望这会有所帮助。-