我已使用FlexBuilder菜单成功生成了我的Web服务代理。此特定Web服务在其WSDL中指定了内部(或不正确)“位置”。这意味着当我进行实际的方法调用时,它会失败,因为位置字段中指定的DNS名称是错误的。 (它在火虫中显示为“中止”)。
如何在服务对象上设置location属性?我以前用Java和php做过这个,但是无法弄清楚如何在Flex中做到这一点。
更新
下面列出了需要更改的字段。它被称为“WSDL端点”。所以问题是:在给定生成的Web服务对象(扩展WebServiceWrapper的对象)的情况下,如何以编程方式执行此操作?
<annotation name="ServiceConfig">
<item name="DEFAULT_ENTITY_PACKAGE">valueObjects</item>
<item name="WSDL-endpoint">http://eoc7/eoc7/api.asmx</item>
<item name="LINKED_FILE"></item>
</annotation>
答案 0 :(得分:1)
Flash Builder将web服务地址存储在Flex项目的.model子目录中的.fml文件中。您可以编辑此文件,然后重新打开该项目。但最简单的方法是删除yor Data / Service并使用向导重建它。
答案 1 :(得分:1)
以下是以编程方式在Flex SOAP服务中设置Web服务的“位置”的方法:
转到生成的服务类并在_service控件对象上设置此属性:
_serviceControl.endpointURI = "http://uri-to-real-location"
所以我创建了一个简单的方法来从类外部设置它:
public function setEndpointUri(uri : String) : void
{
_serviceControl.endpointURI = uri;
}
答案 2 :(得分:0)
这是我可以在生成的服务存根中使用它的唯一方法:
import com.adobe.fiber.core.model_internal;
此外:
/**
* Override super.init() to provide any initialization customization if needed.
*/
protected override function preInitializeService():void
{
_needWSDLLoad = false; // to prevent loading the default WSDL
super.preInitializeService();
// Initialization customization goes here
wsdl = "http://localhost/yourservice?wsdl";
_needWSDLLoad = true;
model_internal::loadWSDLIfNecessary();