0

LinuxマシンからcurlPOSTコマンドを実行すると問題が発生します。

エラーメッセージは次のとおりです-curl:(18)転送が閉じられ、未処理の読み取りデータが残っています

ファイル内のデータを分割して複数回実行するなど、他のシナリオでデータを正常にPOSTできます。curlコマンドを実行した後に得られる完全な応答は次のとおりです

curl -X POST --data @dataCurl -ik -u userid:password -H 'Accept: application/xml' https://IP_ADDRESS:PORT/rest/xxx/xx/
HTTP/1.1 100 Continue
Content-Length: 0
Date: Tue, 26 Mar 2013 14:54:32 GMT
Server: WebSphere Application Server/6.1

HTTP/1.1 400 Bad Request
Date: Tue, 26 Mar 2013 14:54:32 GMT
Server: WebSphere Application Server/6.1
Content-Type: text/html;charset=ISO-8859-1
$WSEP: 
Content-Language: en-US
Set-Cookie: LtpaToken2=SaVGscL3xKqJoTFymznYPqJKBuPO5HBhrpSTg2c+cpknypCODPb2r3RzJy7bP7kxoIWWUVS3iAlxIr0WLv5bhW1r2a3nW0i26Iblnlm07Xf
Set-Cookie: LtpaToken=azPyTXehorPwNejA+UFxlrs+7yQfxQoQws/tXc97yQ5IWjykBjIejbp/2cVAHP5CCI01PnrK+TgZq3+C3HM8jc6GovZ9ID+TwjnDZHSvCgOjEk7lZRX2Sqyk49gGE5BMAZaTRJOF5mK0UNCELWG57KunZbSmqOis3h1F5phKOm2duQDqvRf3C54HTLrH60ec1YwMwXVUU9mAECgLIJIZC/2+shzjkn+2zAF3kgN5sDDVvFyO1aCnJje0VcdRosbIqGQgB01sBm4RXqXRtI3RbiHL9ThtHWH62xQwvVh9UYEphK/XY1Zk3vclRX2IFmDqNG8nsR7zIyY=; Path=/
Set-Cookie: JSESSIONID=0000EJSJpUPd0JIBOZcOEZ_oyiC:-1; Path=/
Transfer-Encoding: chunked
Connection: Close
Expires: Thu, 01 Dec 1994 16:00:00 GMT
Cache-Control: no-cache="set-cookie, set-cookie2"
curl: (18) transfer closed with outstanding read data remaining

データファイルを小さなチャンクに分割すると、データをPOSTできます。その場合の応答は次のとおりです。

curl -X POST --data @SRPart1 -ik -u userid:password -H 'Accept: application/xml' https://IP_ADDRESS:PORT/rest/xxx/xx/


 HTTP/1.1 200 OK
 Content-Type: application/xml
 Expires: -1
 Content-Language: en-US
 Set-Cookie: 
 LtpaToken2=I+Gw+zcgPZDCpUWhKIfr53IiOulhfU5gH1rLIzQi9jdpSLASBkCirkle4qDRnkk+1teEkcN/bHq+Amv4BKrK+9xNy4B6RdWPH0O9S2vfnAC5RqmuoSCFwqWXzTINoWGYH+TqqL24KvjhXOWQ43E

これを修正する方法はありますか?

4

1 に答える 1

1

私は回避策を思いついた、これは将来誰かのために役立つかもしれないし、そうでないかもしれない。

awk関数とforループを使用して入力ファイルをいくつかの部分に分割し、curlコマンドを実行してこの問題を解決しました。

awk '
   BEGIN{ fn = "xxx"; n = 1}
   {
   print > fn
   if (match($0,"YYYID")) {
   close (fn)
   n++
   fn = "xxx" n
   }
   }' inputfile

   for j in xxx*
     do
{          
 curl -X POST --data @$j -ik -u userid:password -H 'Accept: applicatin/xml' https://IPADDRESS/rest/XXX/XX/
         } done
于 2013-04-02T13:23:24.440 に答える