我正在使用 SOAP 服务。在 asp.net core 项目中作为连接服务。Soap UI 填充响应。但没有在 asp.net 核心中填充我的方法。
我搜索了许多不同的地方。我检查了一切。但我找不到问题的解决方案。
var products = response.GetProductListResponse.products
从上面的行返回一个数组。到目前为止没有问题。有些功能已经满了,但大部分都是空白的,我想不出一个合理的解决方案。
您可以在下面找到所有示例代码。预先感谢您的帮助。
连接服务.Json
{
"ProviderId": "Microsoft.VisualStudio.ConnectedService.Wcf",
"Version": "15.0.40203.910",
"ExtendedData": {
"inputs": [
"https://api.n11.com/ws/ProductService.wsdl"
],
"collectionTypes": [
"System.Collections.Generic.List`1",
"System.Collections.Generic.Dictionary`2"
],
"namespaceMappings": [
"*, Soluto.Marketplace.WebServices.N11.Products"
],
"targetFramework": "netcoreapp3.1",
"typeReuseMode": "None"
}
}
要求
<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:sch="http://www.n11.com/ws/schemas">
<soapenv:Header/>
<soapenv:Body>
<sch:GetProductListRequest>
<auth>
<appKey>apikey</appKey>
<appSecret>secretKey</appSecret>
</auth>
<pagingData>
<currentPage>0</currentPage>
<pageSize>200</pageSize>
</pagingData>
</sch:GetProductListRequest>
</soapenv:Body>
</soapenv:Envelope>
回复
<env:Body>
<ns3:GetProductListResponse xmlns:ns3="http://www.n11.com/ws/schemas">
<result>
<status>success</status>
</result>
<products>
<product>
<currencyAmount>223.00</currencyAmount>
<currencyType>2</currencyType>
<displayPrice>1766.16</displayPrice>
<isDomestic>false</isDomestic>
<id>453198848</id>
<price>1766.16</price>
<productSellerCode>123156d4sf56sd4f56s</productSellerCode>
<approvalStatus>1</approvalStatus>
<saleStatus>2</saleStatus>
<stockItems>
<stockItem>
<bundle>false</bundle>
<currencyAmount>223.00</currencyAmount>
<displayPrice>1766.16</displayPrice>
<optionPrice>1766.16</optionPrice>
<attributes/>
<id>126907849152</id>
<quantity>150</quantity>
<version>4</version>
</stockItem>
</stockItems>
<subtitle>test ürün 2</subtitle>
<title>Test Ürün</title>
<unitInfo/>
</product>
</products>
<pagingData>
<currentPage>0</currentPage>
<pageSize>100</pageSize>
<totalCount>1</totalCount>
<pageCount>1</pageCount>
</pagingData>
</ns3:GetProductListResponse>
</env:Body>
</env:Envelope>
C# 代码
public async Task<IList<ProductBasic>> GetProducts(N11PagingModel n11PagingModel)
{
var authentication = GetAuthentication();
var client = new ProductServicePortClient();
var response = await client.GetProductListAsync(new GetProductListRequest { auth = authentication, pagingData = n11PagingModel.Map<RequestPagingData>() });
var result = response.GetProductListResponse.result;
if (result.status == "success")
{
var products = response.GetProductListResponse.products?.ToList();
return products;
}
else
{
return null;
}
}