2013-03-13 29 views
0

要求項目:使用蔚藍移動服務的Windows Azure網站進行溝通與Android設備

1)網站是使用Microsoft的Windows Azure(服務器端建立VB.NET的Windows Azure網站和Android設備之間的通信

2)的Android應用程序在Android設備(客戶端)

客戶端(Android的用戶)應該能夠從Android設備(客戶端)數據發送到網站(服務器端),反之亦然爲了使這可能就是客戶和服務器之間的溝通使用微軟的Windows Azure(服務器端),它使用GCM(谷歌雲通訊)提供移動服務正在

我按照根據文檔的所有步驟

http://www.windowsazure.com/en-us/develop/mobile/tutorials/get-started-with-push-android/

也跟着所有的步驟已經提供微軟的Windows Azure的上面的鏈接文檔中

但是當我嘗試從Android設備發送消息向網站出現以下錯誤

錯誤:com.microsoft.windowsazure.mobileservices.MobileServiceException:錯誤在處理請求

注:GCM(谷歌雲通訊)給了我們這是在Android應用程序用於發送數據的gcm.jar文件對服務器即網站

的onCreate代碼

  @Override 
     public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_to_do); 


    GCMRegistrar.checkDevice(this); 
    GCMRegistrar.checkManifest(this); 
    mRegistationId = GCMRegistrar.getRegistrationId(this); 
    if (mRegistationId.equals("")) { 
     GCMRegistrar.register(this, SENDER_ID); 
    } 

    mProgressBar = (ProgressBar) findViewById(R.id.loadingProgressBar); 

    // Initialize the progress bar 
    mProgressBar.setVisibility(ProgressBar.GONE); 

    try { 
     // Create the Mobile Service Client instance, using the provided 
     // Mobile Service URL and key 
     mClient = new MobileServiceClient(
       "url of website", 
       "POBHgxwAktyxUdeRRpcFyqEcsppwiS99", 
       this).withFilter(new ProgressFilter()); 

     // Get the Mobile Service Table instance to use 
     mToDoTable = mClient.getTable(ToDoItem.class); 

     mTextNewToDo = (EditText) findViewById(R.id.textNewToDo); 

     // Create an adapter to bind the items with the view 
     mAdapter = new ToDoItemAdapter(this, R.layout.row_list_to_do); 
     ListView listViewToDo = (ListView) findViewById(R.id.listViewToDo); 
     listViewToDo.setAdapter(mAdapter); 

     // Load the items from the Mobile Service 
     refreshItemsFromTable(); 
        } 
        catch (MalformedURLException e) { 
        createAndShowDialog(new Exception("There was an error creating the Mobile Service. Verify the URL"), "Error"); 
       } 
       } 

在按鈕單擊事件的addItem()被調用

  public void addItem(View view) { 
    if (mClient == null) { 
     return; 
    } 

    try 
    { 

    // Create a new item 
    ToDoItem item = new ToDoItem(); 

    item.setText(mTextNewToDo.getText().toString()); 
    item.setComplete(false); 

    // Insert the new item 
    mToDoTable.insert(item, new TableOperationCallback<ToDoItem>() { 

     public void onCompleted(ToDoItem entity, Exception exception, ServiceFilterResponse response) { 

      if (exception == null) { 
       if (!entity.isComplete()) { 
        mAdapter.add(entity); 
       } 
      } else { 
       createAndShowDialog(exception, "Error"); 
      } 

     } 
    }); 

    item.setRegistrationId(mRegistationId.equals("") ? 
      GCMIntentService.getRegistrationId() : mRegistationId); 
    mTextNewToDo.setText(""); 
    } 
    catch(Exception ex) 
    { 

    } 
} 

      public void checkItem(ToDoItem item) { 
    if (mClient == null) { 
     return; 
    } 

    // Set the item as completed and update it in the table 
    item.setComplete(true); 

    mToDoTable.update(item, new TableOperationCallback<ToDoItem>() { 

     public void onCompleted(ToDoItem entity, Exception exception, ServiceFilterResponse response) { 
      if (exception == null) { 
       if (entity.isComplete()) { 
        mAdapter.remove(entity); 
       } 
      } else { 
       createAndShowDialog(exception, "Error"); 
      } 
     } 

    }); 
} 

      private void refreshItemsFromTable() { 

    // Get the items that weren't marked as completed and add them in the 
    // adapter 
    mToDoTable.where().field("complete").eq(val(false)).execute(new TableQueryCallback<ToDoItem>() { 

     public void onCompleted(List<ToDoItem> result, int count, Exception exception, ServiceFilterResponse response) { 
      if (exception == null) { 
       mAdapter.clear(); 

       for (ToDoItem item : result) { 
        mAdapter.add(item); 
       } 

      } else { 
       createAndShowDialog(exception, "Error"); 
      } 
     } 
    }); 
} 


private void createAndShowDialog(Exception exception, String title) { 
    createAndShowDialog(exception.toString(), title); 
} 



private void createAndShowDialog(String message, String title) { 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 

    builder.setMessage(message); 
    builder.setTitle(title); 
    builder.create().show(); 
} 



      private class ProgressFilter implements ServiceFilter { 

    @Override 
    public void handleRequest(ServiceFilterRequest request, NextServiceFilterCallback nextServiceFilterCallback, 
      final ServiceFilterResponseCallback responseCallback) { 
     runOnUiThread(new Runnable() { 

      @Override 
      public void run() { 
       if (mProgressBar != null) mProgressBar.setVisibility(ProgressBar.VISIBLE); 
      } 
     }); 

     nextServiceFilterCallback.onNext(request, new ServiceFilterResponseCallback() { 

      @Override 
      public void onResponse(ServiceFilterResponse response, Exception exception) { 
       runOnUiThread(new Runnable() { 

        @Override 
        public void run() { 
         if (mProgressBar != null) mProgressBar.setVisibility(ProgressBar.GONE); 
        } 
       }); 

       if (responseCallback != null) responseCallback.onResponse(response, exception); 
      } 
     }); 
    } 
} 
+0

沒有看到你的任何代碼,也沒有詳細的錯誤信息,它會很難幫助你解決你的問題。考慮發佈一些相關的客戶端代碼和服務器代碼。 – 2013-03-13 06:25:50

回答

0

發現本教程使用'而不是',在我的情況下是問題所在。問題出在Azure上的插入腳本中。希望它可以幫助你:-)