C# 截击如何回应?
请让我知道我需要在哪里用C#用截击写“OnResponse” 我将Android studio中的代码转换为c#,c使用凌空库。然后,我在Xamarin中打开了发送请求和接收响应的代码。 下面是转换后的C#的代码片段。但是,代码不识别“OnResponse”函数。我需要一个在c#中使用Volley成功实现“OnResponse”的示例C# 截击如何回应?,c#,visual-studio,xamarin,xamarin.android,android-volley,C#,Visual Studio,Xamarin,Xamarin.android,Android Volley,请让我知道我需要在哪里用C#用截击写“OnResponse” 我将Android studio中的代码转换为c#,c使用凌空库。然后,我在Xamarin中打开了发送请求和接收响应的代码。 下面是转换后的C#的代码片段。但是,代码不识别“OnResponse”函数。我需要一个在c#中使用Volley成功实现“OnResponse”的示例 public void GetAndPostReqquest(string url, int requestedCode, JSONObject @obj
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;
}
}
public void getandpostrequest(字符串url、int-requestedCode、JSONObject@object、iserversponse-jsonResponse)
{
int method=Request.equestMethodConsts.Get;
开关(请求代码)
{
个案职位:
方法=Request.equestMethodConsts.Post;
打破
案件付诸表决:
方法=Request.equestMethodConsts.Put;
打破
}
如果(!IsInternetAvailable())
{
jsonResponse.RequestFinishedWithError(MContext.GetString(App8.Droid.Resource.String.internet连接不可用));
返回;
}
jsonResponse.RequestStarted();
JsonObjectRequest=新的JsonObjectRequest(方法、url、@object、Llistener、EerrorListener){
私有void OnResponse(JSONObject响应)
{
IDictionary headers=新字典();
字符串凭据=UNAME+“:”+PWD;
string auth=“Basic”+Convert.ToBase64String(credentials.ToCharArray(0,credentials.Length));
标题[“授权”]=auth;
标题[“内容类型”]=“应用程序/json;字符集=utf-8”;
//返回标题;
}
}
要在代码上使用截击,您需要做一些小的更改
首先,我建议您将正在使用的Nugget软件包从Xamarin.Bindings.Volley更改为Xamarin.Android.Volley。您当前使用的软件包已经过时(2017年)我建议的那个不仅是最新的,而且是由Xamarin维护的,所以它很可能会一直更新
在执行代码的活动
中,需要使其实现两个属于Volley
命名空间的接口,它们是:Response.IListener
和Response.IErrorListener
应该是这样的:
public class MainActivity : Activity, Response.IListener, Response.IErrorListener
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);
这将要求您通过向活动添加两种方法来完成这些接口的实现:public void OnErrorResponse(截击错误p0)
和public void OnResponse(对象p0)
在OnResponse
方法中,您将添加逻辑
在使用OnResponse
对象之前,您需要将在OnResponse
中接收到的对象强制转换为JSONObject
对象
活动
定义稍后应如下所示:
public class MainActivity : Activity, Response.IListener, Response.IErrorListener
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);
您的请求将按如下方式更新:
public class MainActivity : Activity, Response.IListener, Response.IErrorListener
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);
希望这会有所帮助。-这在某种程度上是可行的。但是,我的c#Request类是在另一个文件中编写的,我无权更改体系结构。因此,我一直在寻找如何在单独的c#类中实现这个功能,即您正确建议的“OnResponse”函数(然后在activity类中调用它)?没错@humbledog。您可以在另一个类上实现OnResponse,并在从该外部类创建JsonObjectRequest对象时传入该类的实例,我不能像“JsonObjectRequest request=new JsonObjectRequest(方法,url,@;对象,this,this);”这样调用.你有什么建议吗?它帮助我解决了问题。