原因一:
連接超時時間 Timeout 以及寫入Post數據超時時間 ReadWriteTimeout 設置得太短,一般要設置大於6000ms。
原因二:
Expect100Continue 屬性的值設置為了true,將 Expect100Continue 屬性的值設置為 false 即可解決問題。
補充
Expect 100 Continue其實是http協議1.1中的一個header屬性,就是說如果設置了Expect 100 Continue,那么就意味着客戶端在向服務器發送數據的時候,需要先向服務器發起一個請求,看服務器是否願意接受客戶端將要發送的數據(我們這里可以認為是http body,往往是較大的數據塊)。因為Expect 100 comtinue會導致客戶端在向服務器發送數據是進行兩次請求,這樣對通信的性能方面將會受到一定的影響,但這種情況在做驗證或者給予curl的服務器是很常見的,這也是該屬性的主要應用場合。介於以上原因,我們不能濫用該屬性,並且在不支持http 1.1的協議的服務器也會產生一定的問題。
對HTTP/1.1代理服務器的要求:
--- 若代理服務器接到一個請求,此請求包含值為"100-continue"的Expect請求頭域,並且代理服務器可能知道下一站點的服務器遵循HTTP/1.1或更高版協議,或者不知道下一站點服務器的HTTP版本,那么它必須包含此Expect頭域來轉發此請求。
--- 若代理服務器知道下一站點服務器版本是HTTP/1.0或更低,則它不能轉發此請求,並且它必須以417(期望失敗)狀態響應。
--- 代理服務器應當維護一個緩存,以記錄最近訪問下一站點服務器的HTTP版本號。
--- 若接收到的請求來自於版本是HTTP/1.0(或更低)的客戶端,並且此請求不含值為"100-continue"的Expect請求頭域,那么代理服務器不能轉發100(繼續)響應。