2013-08-02 57 views
-4

我平行使用ISBN号与vb.net代码亚马逊网站获取数据的实例..的NullReferenceException是未处理?对象引用不设置到对象

其工作的一些国际标准书号只有数..

当我们用一些其他的ISBN number.It会显示以下错误:

的NullReferenceException是未处理的。你调用的对象是空的。

如何解决这个问题? 任何帮助..

下面是代码:

的任何错误的代码? 谁能给解决方案..

私人小组ButtonProductAdvertisingAPIItemLookup_Click(BYVAL发件人为System.Object的,BYVALË作为System.EventArgs)把手ButtonProductAdvertisingAPIItemLookup.Click sender.Enabled =假

'Product Advertising API, ItemLookup: http://docs.aws.amazon.com/AWSECommerceService/2011-08-01/DG/ItemLookup.html 

    Dim ItemId(9) As String 

    ItemId(0) = System.Uri.EscapeDataString(TextBoxisbn1.Text) 
    ItemId(1) = System.Uri.EscapeDataString(TextBoxisbn2.Text) 
    ItemId(2) = System.Uri.EscapeDataString(TextBoxisbn3.Text) 
    ItemId(3) = System.Uri.EscapeDataString(TextBoxisbn4.Text) 
    ItemId(4) = System.Uri.EscapeDataString(TextBoxisbn5.Text) 
    ItemId(5) = System.Uri.EscapeDataString(TextBoxisbn6.Text) 
    ItemId(6) = System.Uri.EscapeDataString(TextBoxisbn7.Text) 
    ItemId(7) = System.Uri.EscapeDataString(TextBoxisbn8.Text) 
    ItemId(8) = System.Uri.EscapeDataString(TextBoxisbn9.Text) 
    ItemId(9) = System.Uri.EscapeDataString(TextBoxisbn10.Text) 

    Dim i As Integer = 0 
    'For Each ItemId As String In ItemIds 
    'Parallel.ForEach(ItemIds, Sub(ItemId) 
    System.Threading.Tasks.Parallel.ForEach(ItemIds, Sub(ItemId) 
                 'For Each ItemId As String In ItemIds() 


                 'Next 
                 ' Dim ItemId As String = System.IO.Path.GetFileName(currentFile) 
                 My.Settings.ItemId = ItemId 

                 Dim MyREST As New SprightlySoftAWS.REST 

                 Dim RequestURL(i) As String 
                 RequestURL(i) = "https://webservices.amazon.com/onca/xml?Service=AWSECommerceService&Operation=ItemLookup&Version=2011-08-01" 
                 RequestURL(i) += "&SignatureVersion=2&SignatureMethod=HmacSHA256&Timestamp=" & Uri.EscapeDataString(DateTime.UtcNow.ToString("yyyy-MM-dd\THH:mm:ss.fff\Z")) 
                 RequestURL(i) += "&AssociateTag=" 
                 RequestURL(i) += "&ResponseGroup=" & System.Uri.EscapeDataString("ItemAttributes,Large,OfferSummary,Offers,VariationSummary,Reviews") 
                 RequestURL(i) += "&ItemId=" & System.Uri.EscapeDataString(ItemId) 

                 'RequestURL(i) += "&ItemId=" & System.Uri.EscapeDataString(ItemId) 

                 RequestURL(i) += "&IdType=ISBN" 
                 RequestURL(i) += "&SearchIndex=Books" 

                 Dim RequestMethod As String 
                 RequestMethod = "GET" 

                 Dim SignatureValue As String 
                 SignatureValue = MyREST.GetSignatureVersion2Value(RequestURL(i), RequestMethod, "", "") 

                 RequestURL(i) += "&Signature=" & System.Uri.EscapeDataString(SignatureValue) 

                 Dim RetBool As Nullable(Of Boolean) 
                 RetBool = MyREST.MakeRequest(RequestURL(i), RequestMethod, Nothing) 

                 Debug.Print("") 
                 Debug.Print(MyREST.LogData) 
                 Debug.Print("") 

                 Dim Y As Integer 
                 Dim ResponseMessage As String = "" 


                 If RetBool = True Then 
                  Dim MyXmlDocument As System.Xml.XmlDocument 
                  Dim MyXmlNamespaceManager As System.Xml.XmlNamespaceManager 
                  Dim MyXmlNode As System.Xml.XmlNode 
                  Dim MyXmlNodeList As System.Xml.XmlNodeList 

                  MyXmlDocument = New System.Xml.XmlDocument 
                  MyXmlDocument.LoadXml(MyREST.ResponseString) 

                  MyXmlNamespaceManager = New System.Xml.XmlNamespaceManager(MyXmlDocument.NameTable) 
                  MyXmlNamespaceManager.AddNamespace("amz", "http://webservices.amazon.com/AWSECommerceService/2011-08-01") 

                  MyXmlNodeList = MyXmlDocument.SelectNodes("amz:ItemLookupResponse/amz:Items/amz:Item", MyXmlNamespaceManager) 

                  If MyXmlNodeList.Count = 0 Then 
                   ResponseMessage = "Item not found." 
                  Else 

                   For Each ItemXmlNode As System.Xml.XmlNode In MyXmlNodeList 
                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ASIN", MyXmlNamespaceManager) 
                    ResponseMessage += "Details of " & MyXmlNode.InnerText 

                    'Dim vbCrLf As New String(ValueType) 

                    ResponseMessage += vbCrLf 
                    ' ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:Title", MyXmlNamespaceManager) 
                    ResponseMessage += "Title = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:MediumImage/amz:URL", MyXmlNamespaceManager) 
                    ResponseMessage += "Image = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNodeList = ItemXmlNode.SelectNodes("amz:ItemAttributes/amz:Author", MyXmlNamespaceManager) 
                    If IsNothing(MyXmlNodeList) = False Then 
                     ResponseMessage += "Author = " 
                     For Each MyXmlNode In MyXmlNodeList 
                      ResponseMessage += MyXmlNode.InnerText & ", " 
                     Next 
                    End If 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:ItemAttributes/amz:ListPrice/amz:FormattedPrice", MyXmlNamespaceManager) 
                    ResponseMessage += "ListPrice = " 
                    If IsNothing(MyXmlNode) = False Then 
                     ResponseMessage += MyXmlNode.InnerText 
                    End If 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:Offers/amz:Offer/amz:OfferAttributes/amz:Condition", MyXmlNamespaceManager) 
                    ResponseMessage += "Condition = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:Offers/amz:TotalOffers", MyXmlNamespaceManager) 
                    ResponseMessage += "TotalOffers = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:TotalNew", MyXmlNamespaceManager) 
                    ResponseMessage += "TotalNew = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNodeList = ItemXmlNode.SelectNodes("amz:OfferSummary/amz:LowestNewPrice/amz:FormattedPrice", MyXmlNamespaceManager) 
                    ResponseMessage += "LowestNewPrice = " 
                    Y = 0 
                    For Each MyXmlNode In MyXmlNodeList 
                     If Y < 25 Then 
                      ResponseMessage += "" & MyXmlNode.InnerText & " " 
                     End If 
                    Next 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:TotalUsed", MyXmlNamespaceManager) 
                    ResponseMessage += "TotalUsed = " & MyXmlNode.InnerText 

                    ResponseMessage += vbCrLf 

                    MyXmlNode = ItemXmlNode.SelectSingleNode("amz:OfferSummary/amz:LowestUsedPrice/amz:FormattedPrice", MyXmlNamespaceManager) 
                    ResponseMessage += "LowestUsedPrice = " 
                    If IsNothing(MyXmlNode) = False Then 
                     ResponseMessage += "" & MyXmlNode.InnerText 
                    Else 
                     ResponseMessage += "0" 
                    End If 

                    ResponseMessage += vbCrLf 

                    'MyXmlNode = ItemXmlNode.SelectSingleNode("amz:SalesRank", MyXmlNamespaceManager) 
                    'ResponseMessage += "SalesRank = " & MyXmlNode.InnerText 

                    'ResponseMessage += vbCrLf 
                   Next 
                  End If 

                  DialogOutput.Text = "Success" 
                  DialogOutput.TextBoxOutput.Text += vbCrLf & ResponseMessage & vbCrLf 


                 Else 
                  ResponseMessage = FormatLogData(MyREST.RequestURL, MyREST.RequestMethod, MyREST.RequestHeaders, MyREST.ResponseStatusCode, MyREST.ResponseStatusDescription, MyREST.ResponseHeaders, MyREST.ResponseStringFormatted, MyREST.ErrorNumber, MyREST.ErrorDescription) 

                  DialogOutput.Text = "Error" 
                  DialogOutput.TextBoxOutput.Text = ResponseMessage 
                  ' DialogOutput.ShowDialog(Me) 
                  ' DialogOutput.Dispose() 
                 End If 
                 i = i + 1 
                End Sub) 
    'Next 
    DialogOutput.ShowDialog(Me) 
    ClearTextBox(Me) 
    sender.Enabled = True 
End Sub 
+0

提供一些代码。的 –

+0

可能重复[什么是.NET一个NullReferenceException?](http://stackoverflow.com/questions/4660142/what-is-a-nullreferenceexception-in-net) –

+0

参见上面的代码.Tell我任何错误在此代码?如何解决这个错误:“nullreferenceexception未处理。对象引用未设置为对象的实例”... – softwaresolution

回答

0

您可以使用nullables来赶上那个错误。

Dim isbn As Integer?

+0

Hi Hypernate。 是..ISBN是一个整数.. 我使用可以为空值的类型..引用下面的行。 昏暗RetBool可为空(布尔) 如何捕获错误? 给一些代码.. – softwaresolution

+0

那么,如果你使用空值(暗淡x作为整数< - 注意问号).NET将使用默认值。对于整数,这为0 Meanining,如果ISBN为0它等于什么/空/ DBNull的:) – 2013-08-02 11:38:51

+0

参见上面的代码,在代码中的任何错误?我不知道如何找到解决.. – softwaresolution

0

哪里是黄线,如果正在添加调试程序的?

+0

错误显示以上代码的全部内容......在调试程序时,没有黄线代表特定的行。完整的代码覆盖在虚线中... – softwaresolution

+0

我将代码放在try,catch语句中。当我调试代码,线下方出现黄线。 Debug.Print(MyREST.LogData)..当我删除此行..代码的整个部分显示nullreferenceexception错误... – softwaresolution

+0

任何帮助..still我没有得到解决方案..我有同样的错误( NullReferenceException异常)。 – softwaresolution

相关问题