【问题标题】:Setting cookie from webservice call out in salesforce在 Salesforce 中从 Web 服务标注设置 cookie
【发布时间】:2019-10-01 19:15:43
【问题描述】:

有人可以解释一下吗?

stub.inputHttpheaders_x.put('Cookie', 'name = value');

在这种情况下,'name = value' 是什么?

我得到的cookie如下:

stub.outputHttpheaders_x.get('Set-cookie');

如何在第一条语句中使用这个 cookie?

提前致谢。

【问题讨论】:

  • Anutosh:此代码是否在 SFDC Apex 中?如果是这样,我相信您可以使用:req.setHeader:在代码中找到您实际发出请求的位置并将 cookie 添加到标头中,如下所示:req.setHeader('Cookie','sid='+sid) ;

标签: salesforce apex-code


【解决方案1】:

获得存根后,可以使用 inputHttpheaders_x.put 方法设置 HTTP Header 字段。

Wikipedia link 很好地描述了您可以在 HTTP 标头上设置哪些字段。要设置的这些字段之一是“Cookie”。它可以设置为“key=value”值,例如“网站=谷歌”。

代码块

stub.inputHttpheaders_x.put('Cookie', 'name = value');

将值 'name = value' 设置为 Cookie 标头字段。

同样,您可以使用以下方法访问响应对象的 HTTP 标头中设置的 cookie 值:

String cookie = stub.outputHttpHeaders_x.get('Set-Cookie')

希望这是有道理的!

阿努普 P.S:如果您正在尝试使用适当的集成设置。尝试将值打印出来以了解输出的格式。

【讨论】:

  • 您好阿努普,感谢您的回复。我正在尝试从 salesforce 访问 NetDocs api。 Netdocs 有两个 wsdl。一个包含登录方法,另一个包含搜索方法。登录方法返回我可以通过“set-cookie”访问的 cookie。我的问题是如何为第二个 wsdl 中可用的搜索方法绑定或使用这个 cookie。希望我的查询很清楚。提前致谢。
  • 谢谢阿努普。我自己想通了。
  • 如果解决方案与我的解决方案不同,您可以将其添加为问题的答案,并将其标记为已接受。或者,如果它与我的完全相同,您可以将我的答案标记为“已接受”,以便在其他人搜索类似查询时有所帮助。
【解决方案2】:

准确地说:

您必须通过初始化地图拳头来“启用” outputHttpHeaders_x 之后您可以访问 Set-Cookie。

可以在这里阅读: https://developer.salesforce.com/docs/atlas.en-us.apexcode.meta/apexcode/apex_callouts_wsdl2apex.htm

outputHttpHeaders_x 的值默认为空。您必须先设置 outputHttpHeaders_x,然后才能访问响应中的标头内容。

docSample.DocSamplePort stub = new docSample.DocSamplePort();
stub.outputHttpHeaders_x = new Map<String, String>();
String input = 'This is the input string';
String output = stub.EchoString(input);

//Getting cookie header
String cookie = stub.outputHttpHeaders_x.get('Set-Cookie');

//Getting custom header
String myHeader = stub.outputHttpHeaders_x.get('My-Header');

【讨论】:

    猜你喜欢
    • 2012-11-16
    • 1970-01-01
    • 2019-05-23
    • 2010-12-24
    • 1970-01-01
    • 1970-01-01
    • 2021-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多