【问题标题】:Passing a HttpResponse object as an extra in intent in Android在 Android 中将 HttpResponse 对象作为额外的意图传递
【发布时间】:2013-01-03 21:49:59
【问题描述】:

我有一个特殊要求,我想将一个 HttpResponse(来自 Apache CORE API)对象作为额外的对象传递给另一个 Intent。

问题: 我有我的 HTTP 服务器(Apache CORE)运行服务 S。当我收到一个 POST 请求时,应在执行意图 A 后发送响应,该意图 A 向我的服务 S 发送广播已经运行(这是基于我的要求)。所以我需要在广播接收器中处理 HTTP POST 响应。这可能吗?因此,我需要将 handle() 方法中的 HttpResponse 发送到广播接收器并从那里发送响应。如果您需要更多详细信息,请告诉我。

我找到了传递原始类型(如字符串、整数类型等)的链接。感谢您提供任何帮助。

【问题讨论】:

  • 您实际上只能通过意图传递实现Parcelable 的对象。考虑静态单例或在后台线程中解析响应并传递解析结果。
  • 感谢您的回复。你能举个例子解释一下吗? @323go
  • 网上有很多例子——谷歌一下,当你遇到问题时再回来问一个更具体的问题。 SO 的真正目的是提供帮助,而不是提供完整的解决方案。

标签: android android-intent


【解决方案1】:

为了将对象作为额外的传递。您可能需要实现 Parclable 或 Serializable。但是 HttpResponse 的默认实现并没有实现两者。因此,您需要扩展 BasicHttpResponse 并实现其中之一。

【讨论】:

  • 我在 hashMap 中将 HttpResponse 作为额外的传递。但是,我得到了一个像stackoverflow.com/questions/3818745/… 这样的异常。你能解释一下如何解决这个问题吗?谢谢! @wtsang02
【解决方案2】:

您可以使用Serializable接口如下:

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

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

或者更好的是,使用Parcelable 如下(来自@BomberMan's answerthis 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());
    }
  ............
} 

【讨论】:

  • 感谢您的回复。该链接对 Parcelable 非常有用。但是我也可以通过 HttpResponse 吗? (请参阅我更新的问题)。
【解决方案3】:

我用了一个

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

在哪里 response 是 HttpResponse 对象, httpResponse 是用作此请求 ID 的字符串。我在我的活动和服务之间传递了字符串。稍后,使用其值(字符串值)检索对象(键)的值。 HttpResponse 没有实现 Serializable ,因此这很有效 :) 感谢大家的回复。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多