问题描述
我正在编写一个非常基本的应用程序,它将从数据库中获取一些数据,并将这些数据传递给全国各地的其他Web服务。 我的问题是,我必须向其传递数据的服务是WCF服务,其中一些是WEB API。 我想使用wcf服务而不添加服务引用,所以我不会为所有服务创建单独的代理类,因为将来我们将添加更多的客户端,并且也会使用它们的服务,因此手动添加服务目前尚无法为所有人提供参考。
我将使用以下代码来使用不同的wcf服务:
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:4684/Service1.svc");
ChannelFactory factory = new ChannelFactory<ServiceContract>(binding,address);
ServiceContract channel = factory.CreateChannel();
string resturnmessage = channel.YourMethod("test");
但是我不能使用此方法来使用REST API,因此我必须为此单独编写专用功能,并且需要标记客户端是否具有REST API或WCF服务。
请对此提供帮助。谢谢
解决方法
您可以将<Stack.Screen name="Mediclic" component={AppDraw}
代码放在 import { NavigationContainer,useNavigation,DrawerActions } from '@react-navigation/native';
.
.
.
render({
return (
<Root>
<NavigationContainer ref={navigationRef}>
<Stack.Navigator >
<Stack.Screen name="Accueil" children={this.AppDraw}
options={
headerLeft: () =>
<TouchableOpacity style={{ marginLeft: 5 }} onPress={() => navigation.openDrawer() }>
<MaterialIcons name='menu' size={28} color={'white'} />
</TouchableOpacity>,}
} />
</Stack.Navigator>
</NavigationContainer>
);
}
}
AppDraw = () =>
<Drawer.Navigator>
<Drawer.Screen name="Accueil" component={AccueilScreen} />
<Drawer.Screen name="A propos" component={AboutScreen} />
</Drawer.Navigator>
类中,并将SOAP
代码放在SOAPDriver
类中。
然后根据被告知要与之通信的服务,创建一个使用SOAPDriver或RESTDriver的REST
类。
伪代码:
RESTDriver
,
这是我的演示:
<endpoint address="REST"
binding="webHttpBinding"
contract="Demo_rest_ConsoleApp.IService1" behaviorConfiguration="ESEndPointBehavior"/>
<endpoint address="SOAP"
binding="basicHttpBinding"
contract="Demo_rest_ConsoleApp.IService1"></endpoint>
这是我的WCF服务。它发布了两个端点,一个是SOAP服务,另一个是REST服务。
BasicHttpBinding binding = new BasicHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8763/TEST/SOAP");
ChannelFactory<IService1> factory = new ChannelFactory<IService1>(binding,address);
IService1 channel = factory.CreateChannel();
Console.WriteLine(channel.Test());
Console.ReadLine();
呼叫SOAP服务:
WebHttpBinding binding = new WebHttpBinding();
EndpointAddress address = new EndpointAddress("http://localhost:8763/TEST/REST");
ChannelFactory<IService1> factory = new ChannelFactory<IService1>(binding,address);
factory.Endpoint.EndpointBehaviors.Add(new WebHttpBehavior());
IService1 channel = factory.CreateChannel();
Console.WriteLine(channel.Test());
Console.ReadLine();
致电REST服务:
在调用REST服务时不要忘记添加WebHttpBehavior:
factory.Endpoint.EndpointBehaviors.Add(new WebHttpBehavior());
如果问题仍然存在,请随时告诉我。