【发布时间】:2017-09-02 18:57:24
【问题描述】:
我似乎遇到了一些 API 调用问题,包括 GetSuggestedCategories 和 UploadSiteHostedPictures 调用。我将在这里重点关注 GetSuggestedCategories 调用,因为两者都返回成功,但预期值为空。
如果有人可以查看我的代码并指出正确的方向来确定导致返回为空的原因,我会很高兴。我花了几天时间试图确定这一点,但没有运气。
对于 GetSuggestedCategories 调用,我的代码如下所示:
Public Function GetSuggestedCategories(keywords As String) As List(Of String)
'<STAThread>
Dim endpoint As String = "https://api.ebay.com/wsapi"
Dim callName As String = "GetSuggestedCategories"
Dim siteId As String = SiteCodeType.US
Dim appId As String = "My App ID"
Dim devId As String = "My Dev ID"
Dim certId As String = "My Cert ID"
Dim version As String = "1031"
'build the request URL
Dim requestURL As String = endpoint +
"?callname=" + callName +
"&siteid=" + siteId +
"&appid=" + appId +
"&version=" + version +
"&routing=default"
'Create the service
Dim service As eBayAPIInterfaceClient = New eBayAPIInterfaceClient("eBayAPI", requestURL)
Dim requesterCredentials As CustomSecurityHeaderType = New CustomSecurityHeaderType
requesterCredentials.eBayAuthToken = "My User Token"
requesterCredentials.Credentials = New UserIdPasswordType
requesterCredentials.Credentials.AppId = appId
requesterCredentials.Credentials.DevId = devId
requesterCredentials.Credentials.AuthCert = certId
'Make the call to GetSuggestedCategories
Dim request As eBayWSDL.GetSuggestedCategoriesRequestType = New GetSuggestedCategoriesRequestType
request.Version = version
Dim ipHost As IPHostEntry = System.Net.Dns.GetHostEntry(System.Net.Dns.GetHostName())
For Each ipaddress As IPAddress In ipHost.AddressList
Debug.Print(ipaddress.ToString)
If ipaddress.AddressFamily = Sockets.AddressFamily.InterNetwork Then
request.EndUserIP = ipHost.AddressList(2).ToString
Exit For
End If
Next
request.Query = keywords
Dim detaillevels As New List(Of DetailLevelCodeType)
detaillevels.Add(DetailLevelCodeType.ReturnAll)
request.DetailLevel = detaillevels.ToArray
Dim returnCategories As New List(Of String)
Dim response As GetSuggestedCategoriesResponseType
Try
response = service.GetSuggestedCategories(requesterCredentials, request)
If response.Ack <> AckCodeType.Failure Then
returnCategories.Add("0: Complete with no errors.")
returnCategories.Add(response.SuggestedCategoryArray.SuggestedCategory.FirstOrDefault.Category.CategoryID)
Else
returnCategories.Add("1: Errors returned.")
Dim err As ErrorType
For Each err In response.Errors
returnCategories.Add(response.Errors(0).ErrorCode + ": " + response.Errors(0).ShortMessage)
Next err
End If
Catch ex As Exception
Finally
service.Close()
service = Nothing
requesterCredentials = Nothing
request = Nothing
response = Nothing
End Try
Return returnCategories
当我运行此代码时,响应返回一个“成功”的 ACK 代码,但这些值都是空的。下图显示了具有空值的对象。
根据来自 eBay 的文档,我预计 response.SuggestedCategoryArray.SuggestedCategory 将填充 1 个或多个类别,我可以在其中提取类别的名称、ID 等。
我尝试运行包括“家具”、“红色椅子”、“绘画”、“艺术”和“o'keefe”在内的查询,因为文档特别推荐其中一些作为示例来查看回报的差异当提出广泛或具体的要求时。一切都返回一个空的response.SuggestedCategoryArray。
【问题讨论】: