@@ -47,70 +47,67 @@ public static ANetApiResponse PostData<TQ, TS>(AuthorizeNet.Environment env, TQ
47
47
webRequest . Proxy = SetProxyIfRequested ( webRequest . Proxy ) ;
48
48
49
49
var requestType = typeof ( TQ ) ;
50
-
51
50
var serializer = new XmlSerializer ( requestType ) ;
52
51
using ( var writer = new XmlTextWriter ( webRequest . GetRequestStream ( ) , Encoding . UTF8 ) )
53
52
{
54
53
serializer . Serialize ( writer , request ) ;
55
54
}
56
55
57
56
// Get the response
58
- String stringResponse = null ;
57
+ String responseAsString = null ;
59
58
Logger . debug ( string . Format ( "Retreiving Response from Url: '{0}'" , postUrl ) ) ;
60
59
using ( var webResponse = webRequest . GetResponse ( ) )
61
60
{
62
61
Logger . debug ( string . Format ( "Received Response: '{0}'" , webResponse ) ) ;
63
62
64
- using ( var streamData = webResponse . GetResponseStream ( ) )
63
+ using ( var responseStream = webResponse . GetResponseStream ( ) )
65
64
{
66
- if ( null != streamData )
65
+ if ( null != responseStream )
67
66
{
68
- using ( var reader = new StreamReader ( streamData ) )
67
+ using ( var reader = new StreamReader ( responseStream ) )
69
68
{
70
- stringResponse = reader . ReadToEnd ( ) ;
69
+ responseAsString = reader . ReadToEnd ( ) ;
71
70
}
72
- Logger . debug ( string . Format ( "Response from Stream: '{0}'" , stringResponse ) ) ;
71
+ Logger . debug ( string . Format ( "Response from Stream: '{0}'" , responseAsString ) ) ;
73
72
}
74
73
}
75
74
}
76
- if ( null != stringResponse )
75
+ if ( null != responseAsString )
77
76
{
78
- using ( var stream = new MemoryStream ( Encoding . UTF8 . GetBytes ( stringResponse ) ) )
77
+ using ( var memoryStreamForResponseAsString = new MemoryStream ( Encoding . UTF8 . GetBytes ( responseAsString ) ) )
79
78
{
80
79
var responseType = typeof ( TS ) ;
81
80
var deSerializer = new XmlSerializer ( responseType ) ;
82
81
83
- //if (null != stringResponse)
82
+ Object deSerializedObject ;
83
+ try
84
84
{
85
- Object deSerializedObject ;
86
-
87
- try
88
- {
89
- deSerializedObject = deSerializer . Deserialize ( stream ) ;
90
- }
91
- catch ( Exception )
92
- {
93
- stream . Seek ( 0 , SeekOrigin . Begin ) ;
94
- var errorDeserializer = new XmlSerializer ( typeof ( ANetApiResponse ) ) ;
95
- deSerializedObject = errorDeserializer . Deserialize ( stream ) ;
96
- }
85
+ // try deserializing to the expected response type
86
+ deSerializedObject = deSerializer . Deserialize ( memoryStreamForResponseAsString ) ;
87
+ }
88
+ catch ( Exception )
89
+ {
90
+ // probably a bad response, try if this is an error response
91
+ memoryStreamForResponseAsString . Seek ( 0 , SeekOrigin . Begin ) ; //start from beginning of stream
92
+ var genericDeserializer = new XmlSerializer ( typeof ( ANetApiResponse ) ) ;
93
+ deSerializedObject = genericDeserializer . Deserialize ( memoryStreamForResponseAsString ) ;
94
+ }
97
95
98
- //if error response
99
- if ( deSerializedObject is ErrorResponse )
96
+ //if error response
97
+ if ( deSerializedObject is ErrorResponse )
98
+ {
99
+ response = deSerializedObject as ErrorResponse ;
100
+ }
101
+ else
102
+ {
103
+ //actual response of type expected
104
+ if ( deSerializedObject is TS )
100
105
{
101
- response = deSerializedObject as ErrorResponse ;
106
+ response = deSerializedObject as TS ;
102
107
}
103
- else
108
+ else if ( deSerializedObject is ANetApiResponse ) //generic response
104
109
{
105
- //actual response of type expected
106
- if ( deSerializedObject is TS )
107
- {
108
- response = deSerializedObject as TS ;
109
- }
110
- else if ( deSerializedObject is ANetApiResponse ) //generic response
111
- {
112
- response = deSerializedObject as ANetApiResponse ;
113
- }
110
+ response = deSerializedObject as ANetApiResponse ;
114
111
}
115
112
}
116
113
}
@@ -135,7 +132,7 @@ public static IWebProxy SetProxyIfRequested(IWebProxy proxy)
135
132
{
136
133
newProxy = new WebProxy ( proxyUri ) ;
137
134
}
138
- if ( null != newProxy )
135
+ // if (null != newProxy)
139
136
{
140
137
newProxy . UseDefaultCredentials = true ;
141
138
newProxy . BypassProxyOnLocal = true ;
0 commit comments