我希望能从我的ASP.NET WEB API Post方法向我的简单Android应用程序发送小型推送通知。以下是我尝试过并进行了研究的内容。
我正在使用Google云消息传递服务将通知发送到应用程序中。我的应用程序以名称值对形式接收它。这里还提供了服务器代码的工作Java版本和我在Post方法中实现的C#版本。但是我的方法会抛出一个异常,错误为“Exception Occured with Error as(15913): println needs a message”,在Android应用程序中。
服务器部分的工作Java代码如下:
同样的,我的ASP.NET WEB API中C#代码如下:...
在Android应用程序中,我有以下接收器的LOC...
我正在使用Google云消息传递服务将通知发送到应用程序中。我的应用程序以名称值对形式接收它。这里还提供了服务器代码的工作Java版本和我在Post方法中实现的C#版本。但是我的方法会抛出一个异常,错误为“Exception Occured with Error as(15913): println needs a message”,在Android应用程序中。
服务器部分的工作Java代码如下:
public void sendmessage2Device(View v,String regisID,String msg1,String msg2) {
HttpClient client = new DefaultHttpClient();
HttpPost post = new HttpPost(
"https://android.googleapis.com/gcm/send");
try {
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(1);
nameValuePairs.add(new BasicNameValuePair("registration_id",regisID));
nameValuePairs.add(new BasicNameValuePair("data1",msg1));
nameValuePairs.add(new BasicNameValuePair("data2", msg2));
post.setHeader("Authorization","key=AIzaSyBB6igK9sYYBTSIly6SRUHFVexeOa_7FuM");
post.setHeader("Content-Type", "application/x-www-form-urlencoded;charset=UTF-8");
post.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = client.execute(post);
InputStreamReader inputst = new InputStreamReader(response.getEntity().getContent());
BufferedReader rd = new BufferedReader(inputst);
String line = "";
while ((line = rd.readLine()) != null) {
Log.e("HttpResponse", line);
String s = line.substring(0);
Log.i("GCM response",s);
//Toast.makeText(v.getContext(), s, Toast.LENGTH_LONG).show();
}
} catch (IOException e) {
e.printStackTrace();
}
同样的,我的ASP.NET WEB API中C#代码如下:...
public String Post([FromBody]TransactionDetails value)
{
try
{
WebClient toGCM = new WebClient();
toGCM.Headers.Add("ContentType:");
toGCM.Headers["ContentType"] = "application/x-www-form-urlencoded; charset=UTF-8";
//HttpWebRequest toGCM = (HttpWebRequest)WebRequest.Create("https://android.googleapis.com/gcm/send");
//toGCM.ContentType = "application/x-www-form-urlencoded; charset=UTF-8";
toGCM.Headers.Add("Accept:");
toGCM.Headers["Accept"]= "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
//toGCM.Accept = "application/json, text/javascript, */*; q=0.01";
toGCM.Headers.Add("UserAgent:") ;
toGCM.Headers["UserAgent"]= "Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36";
toGCM.Headers.Add("Authorization:");
toGCM.Headers["Authorization"] = "key=AIzaSyCoxjeOGi_1ss2TeShDcoYbNcPU9_0J_TY";
//String DatatoClient = "ToAccountNumber=" + value.ToAccountNumber + "&Amount=" + value.Amount;
NameValueCollection postFieldNameValue = new NameValueCollection();
postFieldNameValue.Add("registration_id", "APA91bHzO52-3TsEIMV3RXi45ICIo9HOe1ospPl3gRYwAAw59ATHvadGPZN86heHOQJNU8syju-yD9UQqSgkZOqllGi5AoSPMRRuw3RYhgApflr0abLoAh2GWFQCZgToG_aM0rOg0lBV8osz6ZMtP1JBF1S9_DiWiqKRT5WL6qFz4PqyE0jCHsE");
postFieldNameValue.Add("Account", value.ToAccountNumber.ToString());
postFieldNameValue.Add("Amount", value.Amount.ToString());
byte[] responseArray = toGCM.UploadValues("https://android.googleapis.com/gcm/send", postFieldNameValue);
String S=Encoding.ASCII.GetString(responseArray);
return S;
}
catch (Exception e)
{
Console.WriteLine("Exception Occured in Post Method on Web Server as:{0}", e.Message);
return e.Message;
}
}
在Android应用程序中,我有以下接收器的LOC...
public void onReceive(Context context, Intent intent) {
try {
String action = intent.getAction();
if (action.equals("com.google.android.c2dm.intent.REGISTRATION"))
{
String registrationId = intent.getStringExtra("registration_id");
Log.i("Received the Registration Id as ",registrationId);
String error = intent.getStringExtra("error");
String unregistered = intent.getStringExtra("unregistered");
}
else if (action.equals("com.google.android.c2dm.intent.RECEIVE"))
{
Log.i("In the RECEIVE Method ",intent.getStringExtra("Account"));
String Account = intent.getStringExtra("Account");
String Amount = intent.getStringExtra("Amount");
Log.i("Received Account as ",Account);
Log.i("Received Amount as ",Amount);
}
}
catch(Exception e)
{
Log.i("Exception Occured with Error as ",e.getMessage());
}
finally
{
}
我对Android开发非常陌生,这是我的第一个Helloworld Android应用程序。请问有人可以告诉我我在做什么错了吗?为什么会抛出异常并如何纠正它?