2012-03-08 37 views
1

我正在對Assembla REST API發出GET請求。您可以在這裏閱讀:http://www.assembla.com/spaces/breakoutdocs/wiki/Assembla_REST_APIAndroid上的Phonegap:在請求標頭上設置Accept:'application/xml'時,AJAX請求失敗

API要求您在請求標頭上設置Accept:'application/xml'以接收xml數據。否則,html會回到響應中。

我的服務調用iOS和Safari中的工作,但不要在Android中返回任何東西。

我cordova.xml文件有<access origin=".*"/>所以我不認爲這是一個白名單問題。我嘗試了幾乎所有我能想到的變化。

樣品Ajax請求:

$.ajax({ 
    url: 'https://www.assembla.com/spaces/my_spaces', 
    username: userModel.get('username'), 
    password: userModel.get('password'), 
    headers: { 
     Accept: 'application/xml' 
    }, 
    success: onSuccess, 
    error: onError 
}); 

就像我說的,這個要求不會打無論是在安卓的onSuccess或onerror的。該請求在iOS和Safari中完美無缺。如果我取出標頭屬性,請求將在Android中打到成功,但會返回HTML。

回答

0

您是否檢查過firebug或httpheaders中的請求和響應,看看它們看起來是否正確?基本上看看您的標題設置正確的請求。仔細檢查你沒有收到任何服務器錯誤,並查看返回的響應是否實際上是xml。

+0

因此,即使設置了用戶名和密碼,看起來授權標頭也會從Android請求中排除。 – 2012-03-09 16:23:58

0

授權在Android上失敗,只需在ajax請求上設置用戶名和密碼屬性即可。手動設置標題解決了問題。

headers: { 
    Accept: 'application/xml', 
    Authorization: 'Basic ' + window.btoa('username:password') 
}