@@ -71,46 +71,46 @@ public virtual ElasticsearchResponse<Stream> DeleteSync(Uri uri, byte[] data, IR
71
71
72
72
private ElasticsearchResponse < Stream > HeaderOnlyRequest ( Uri uri , string method , IRequestConnectionConfiguration requestSpecificConfig )
73
73
{
74
- var r = this . CreateHttpWebRequest ( uri , method , requestSpecificConfig ) ;
74
+ var r = this . CreateHttpWebRequest ( uri , method , null , requestSpecificConfig ) ;
75
75
return this . DoSynchronousRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
76
76
}
77
77
78
78
private ElasticsearchResponse < Stream > BodyRequest ( Uri uri , byte [ ] data , string method , IRequestConnectionConfiguration requestSpecificConfig )
79
79
{
80
- var r = this . CreateHttpWebRequest ( uri , method , requestSpecificConfig ) ;
80
+ var r = this . CreateHttpWebRequest ( uri , method , data , requestSpecificConfig ) ;
81
81
return this . DoSynchronousRequest ( r , data , requestSpecificConfig ) ;
82
82
}
83
83
84
84
public virtual Task < ElasticsearchResponse < Stream > > Get ( Uri uri , IRequestConnectionConfiguration requestSpecificConfig = null )
85
85
{
86
- var r = this . CreateHttpWebRequest ( uri , "GET" , requestSpecificConfig ) ;
86
+ var r = this . CreateHttpWebRequest ( uri , "GET" , null , requestSpecificConfig ) ;
87
87
return this . DoAsyncRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
88
88
}
89
89
public virtual Task < ElasticsearchResponse < Stream > > Head ( Uri uri , IRequestConnectionConfiguration requestSpecificConfig = null )
90
90
{
91
- var r = this . CreateHttpWebRequest ( uri , "HEAD" , requestSpecificConfig ) ;
91
+ var r = this . CreateHttpWebRequest ( uri , "HEAD" , null , requestSpecificConfig ) ;
92
92
return this . DoAsyncRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
93
93
}
94
94
public virtual Task < ElasticsearchResponse < Stream > > Post ( Uri uri , byte [ ] data , IRequestConnectionConfiguration requestSpecificConfig = null )
95
95
{
96
- var r = this . CreateHttpWebRequest ( uri , "POST" , requestSpecificConfig ) ;
96
+ var r = this . CreateHttpWebRequest ( uri , "POST" , data , requestSpecificConfig ) ;
97
97
return this . DoAsyncRequest ( r , data , requestSpecificConfig : requestSpecificConfig ) ;
98
98
}
99
99
100
100
public virtual Task < ElasticsearchResponse < Stream > > Put ( Uri uri , byte [ ] data , IRequestConnectionConfiguration requestSpecificConfig = null )
101
101
{
102
- var r = this . CreateHttpWebRequest ( uri , "PUT" , requestSpecificConfig ) ;
102
+ var r = this . CreateHttpWebRequest ( uri , "PUT" , data , requestSpecificConfig ) ;
103
103
return this . DoAsyncRequest ( r , data , requestSpecificConfig : requestSpecificConfig ) ;
104
104
}
105
105
106
106
public virtual Task < ElasticsearchResponse < Stream > > Delete ( Uri uri , byte [ ] data , IRequestConnectionConfiguration requestSpecificConfig = null )
107
107
{
108
- var r = this . CreateHttpWebRequest ( uri , "DELETE" , requestSpecificConfig ) ;
108
+ var r = this . CreateHttpWebRequest ( uri , "DELETE" , data , requestSpecificConfig ) ;
109
109
return this . DoAsyncRequest ( r , data , requestSpecificConfig : requestSpecificConfig ) ;
110
110
}
111
111
public virtual Task < ElasticsearchResponse < Stream > > Delete ( Uri uri , IRequestConnectionConfiguration requestSpecificConfig = null )
112
112
{
113
- var r = this . CreateHttpWebRequest ( uri , "DELETE" , requestSpecificConfig ) ;
113
+ var r = this . CreateHttpWebRequest ( uri , "DELETE" , null , requestSpecificConfig ) ;
114
114
return this . DoAsyncRequest ( r , requestSpecificConfig : requestSpecificConfig ) ;
115
115
}
116
116
@@ -127,9 +127,9 @@ private static void ThreadTimeoutCallback(object state, bool timedOut)
127
127
}
128
128
129
129
130
- protected virtual HttpWebRequest CreateHttpWebRequest ( Uri uri , string method , IRequestConnectionConfiguration requestSpecificConfig )
130
+ protected virtual HttpWebRequest CreateHttpWebRequest ( Uri uri , string method , byte [ ] data , IRequestConnectionConfiguration requestSpecificConfig )
131
131
{
132
- var myReq = this . CreateWebRequest ( uri , method , requestSpecificConfig ) ;
132
+ var myReq = this . CreateWebRequest ( uri , method , data , requestSpecificConfig ) ;
133
133
this . SetBasicAuthorizationIfNeeded ( myReq ) ;
134
134
this . SetProxyIfNeeded ( myReq ) ;
135
135
return myReq ;
@@ -160,7 +160,7 @@ private void SetBasicAuthorizationIfNeeded(HttpWebRequest myReq)
160
160
//}
161
161
}
162
162
163
- protected virtual HttpWebRequest CreateWebRequest ( Uri uri , string method , IRequestConnectionConfiguration requestSpecificConfig )
163
+ protected virtual HttpWebRequest CreateWebRequest ( Uri uri , string method , byte [ ] data , IRequestConnectionConfiguration requestSpecificConfig )
164
164
{
165
165
//TODO append global querystring
166
166
//var url = this._CreateUriString(path);
@@ -178,6 +178,14 @@ protected virtual HttpWebRequest CreateWebRequest(Uri uri, string method, IReque
178
178
myReq . Timeout = timeout ; // 1 minute timeout.
179
179
myReq . ReadWriteTimeout = timeout ; // 1 minute timeout.
180
180
myReq . Method = method ;
181
+
182
+ //WebRequest won't send Content-Length: 0 for empty bodies
183
+ //which goes against RFC's and might break i.e IIS when used as a proxy.
184
+ //see: https://github.com/elasticsearch/elasticsearch-net/issues/562
185
+ var m = method . ToLower ( ) ;
186
+ if ( m != "head" && m != "get" && ( data == null || data . Length == 0 ) )
187
+ myReq . ContentLength = 0 ;
188
+
181
189
return myReq ;
182
190
}
183
191
0 commit comments