2013-01-20 61 views
0

我有一個特殊的要求,我想傳遞一個HttpResponse(從Apache CORE API)對象作爲額外的另一個意圖。傳遞一個HttpResponse對象作爲額外的意圖在Android

問題: 我有我的HTTP服務器(Apache CORE)運行一個服務S.當我收到一個POST請求時,應該在執行一個意圖A後發送響應,它將一個廣播發送到我的服務S已經運行(這是根據我的要求設計的)。所以我需要在廣播接收器中處理HTTP POST響應。這可能嗎?所以,我需要handle()方法中的HttpResponse在Broadcast接收器中發送,並從那裏發送響應。如果您需要更多詳細信息,請告訴我。

我找到了傳遞像String,Integer類型等原始類型的鏈接。

+0

你真的只能通過intents傳遞實現'Parcelable'的對象。考慮一個靜態單例或解析後臺線程中的響應並傳遞解析結果。 – 323go

+0

感謝您的回覆。你能用一個例子來解釋嗎? @ 323go – user1741274

+0

網上有很多例子 - 谷歌爲它,當你遇到問題時回到這裏來問一個更具體的問題。 SO真的意味着幫助,而不是提供完整的解決方案。 – 323go

回答

0

我用

HashMap<Object,Object> requestValue.put(response,"httpResponse"), 

其中 響應是HttpResponse對象,httpResponse是充當此請求的ID的字符串。我在我的活動和服務之間傳遞了字符串。稍後,使用其值(字符串值)檢索對象(鍵)的值。 HttpResponse不實現Serializable,因此這工作:)謝謝大家的回覆。

1

爲了傳遞對象作爲額外的東西。您可能需要實現Parclable或Serializable。但是HttpResponse的默認實現並沒有實現兩者。所以你需要擴展BasicHttpResponse並實現其中的一個。

+0

我通過HttpResponse作爲額外的哈希映射。但是,我收到一個異常,如http://stackoverflow.com/questions/3818745/androidruntime-error-parcel-unable-to-marshal-value。你能解釋一下如何解決這個問題嗎?謝謝! @ wtsang02 – user1741274

2

您可以使用如下Serializable接口:

// pass: 
intent.putExtra("MotherClass", obj); 

// receive: 
getIntent().getSerializableExtra("MotherClass"); 

,甚至更好,使用Parcelable如下(從@BomberMan's answer來源和this blog):

public class CustomObject1 implements Parcelable { 

    // parcelable code CustomObject1 
} 
public class CustomObject2 implements Parcelable { 

    private CustomObject1 obj1; 

    // add CustomObject1 here with getter setter 
    // parcelable code for CustomObject2 

    @Override 
    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeParcelable(obj1, flags); 
    } 
    private void readFromParcel(Parcel in) { 
     obj1 = in.readParcelable(CustomObject1.class.getClassLoader()); 
    } 
    ............ 
} 
+0

感謝您的回覆。該鏈接對於Parcelable非常有用。但我也可以通過HttpResponse? (看我更新的問題)。 – user1741274

相關問題