Web API Batch requests failing in Postman
我最近向我的Web API项目添加了批处理请求支持,并花费了一天的大部分时间尝试调试为什么使用Postman批处理请求失败:
经过一段时间的搜索,并全面了解了CRLF的问题,我终于使用
我的问题是:邮递员在做些什么使我的批处理请求失败?
使用提琴手来捕获请求,然后使用winmerge来区分它们,唯一的区别是邮递员请求包含一些其他标头:
1 2 3 4 5 6 | User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm Accept: */* Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 |
我尝试将这些标头添加到我的控制台应用程序中以使请求完全相同,但它仍然可以在我的控制台应用程序中使用,但是在Postman中失败了!
有人知道为什么吗?
以下捕获提琴手的请求:
邮递员:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | POST http://localhost:49402/api/sequentialBatch HTTP/1.1 Host: localhost:49402 Connection: keep-alive Content-Length: 528 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 Authorization: Basic c2E6c2E= Content-Type: multipart/mixed; boundary="c3581ff4-f6eb-4c41-ac02-0bb8b80b30ef" Accept: */* Accept-Encoding: gzip,deflate,sdch Accept-Language: en-US,en;q=0.8 --c3581ff4-f6eb-4c41-ac02-0bb8b80b30ef Content-Type: application/http; msgtype=request GET /api/currency?$filter=Currency_ID eq 'Z-US$' HTTP/1.1 Host: localhost.fiddler:49402 Authorization: Basic c2E6c2E= Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 --c3581ff4-f6eb-4c41-ac02-0bb8b80b30ef Content-Type: application/http; msgtype=request GET /api/countrycode/US HTTP/1.1 Host: localhost.fiddler:49402 Authorization: Basic c2E6c2E= Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 --c3581ff4-f6eb-4c41-ac02-0bb8b80b30ef-- |
控制台应用程序:(带有其他邮递员标头)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | POST http://localhost:49402/api/sequentialBatch HTTP/1.1 Host: localhost:49402 Connection: Keep-Alive Content-Length: 553 User-Agent: Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/36.0.1985.125 Safari/537.36 Cache-Control: no-cache Origin: chrome-extension://fdmmgilgnpjigdojojpjoooidkmcomcm Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 Authorization: Basic c2E6c2E= Content-Type: multipart/mixed; boundary="cf2b18a3-5861-49d7-878b-142283cb4959" Accept: */* Accept-Encoding: gzip, deflate, sdch Accept-Language: en-US, en; q=0.8 --cf2b18a3-5861-49d7-878b-142283cb4959 Content-Type: application/http; msgtype=request GET /api/currency?$filter=Currency_ID%20eq%20'Z-US$' HTTP/1.1 Host: localhost.fiddler:49402 Authorization: Basic c2E6c2E= Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 --cf2b18a3-5861-49d7-878b-142283cb4959 Content-Type: application/http; msgtype=request GET /api/countrycode/US HTTP/1.1 Host: localhost.fiddler:49402 Authorization: Basic c2E6c2E= Session-ID: 03317cfa-c051-4813-a02a-a9fa955cc7f5 --cf2b18a3-5861-49d7-878b-142283cb4959-- |
我确实注意到一个区别:在邮递员中,
对此有一些问题,但是我正在使用Fiddler。看来空的返回字符会有所不同:
这似乎也就是您的Postman请求和控制台应用程序之间的区别。