0

I am trying to POST JSON content to a web service. It works fine from POSTER (firefox plugin) and from HTTP Client (Mac) but throws 500-Internal Server Error when trying to POST from XCode (iOS App). Can someone help me out with this.

The request details are :-

HTTP Method : POST

Content-Type : application/json

HTTP Body :

{
  "HasSunRoof" : "true",
  "HasTiltWheel" : "true",
  "VIN" : "XXXXXXXXXXXXXXX",
  "VoluntarySignatureComments" : "Voluntary sign comments",
  "Make" : "Audi",
  "IsVinManuallyEntered" : "false",
  "AssociatedCompanyId" : "2",
  "ReposessionMethod" : "Voluntary with release",
  "HasKeys" : "true",
  "CreatedBy" : "RAMBO",
  "InteriorCondition" : "Poor",
  "HasPowerWindows" : "true",
  "GlassCondition" : "Good",
  "TransmissionType" : "Auto",
  "EngineType" : "EngineType1",
  "RecoveredFromAddress1" : "Myaddress1",
  "CompanyId" : "1",
  "HasPowerSeats" : "true",
  "HasAirConditioning" : "true",
  "Mileage" : "1243",
  "HasCruiseControl" : "true",
  "Trim" : "Trim data",
  "HasRadio" : "true",
  "HasSpares" : "true",
  "FuelType" : "Alternative Fuel",
  "IsDriveReady" : "true",
  "TireCondition" : "Average",
  "IsActive" : "false",
  "CreatedOn" : "5\/24\/12",
  "RecoveredFromAddress2" : "Myaddress2",
  "IsRunnable" : "true",
  "RecoveredFromState" : "Mystate",
  "BodyStyle" : "Style1",
  "RecoveredFromZip" : "90009",
  "IsVoluntary" : "false",
  "InteriorConditionDescription" : "Poor interiors",
  "RecoveredFromCity" : "Mycity",
  "Model" : "A6",
  "Year" : "2009"
}

EDIT : Solved See below for the fix to my noobish bug.

4

2 に答える 2

1

これでリクエストを正常に送信できました。私の側では、HTTPリクエストを間違った方法で作成したのは悪いことでした。

解決策:「Content-Type」、「Content-Length」などのhttpヘッダーには、setValue: forHTTPHeaderField:を使用し、 setValue:forKey:は使用しないでください。

キーがユニークである限り、どれを使用してもかまいません。しかし、私は間違っていました。

于 2012-05-24T07:43:56.053 に答える
0

実際のコードを投稿しない限り、質問に答えるのは非常に困難です。

ただし、以下のことを確認してください。

  1. MSMutableRequestを使用し、HTTPMethodを@"POST"として設定する必要があります
  2. ヘッダーのContent-Typeを「Application/json」に設定していることを確認してください(これはすでに行っていると述べています)
  3. Content-Lengthをjsonstringの文字列の長さに設定していることを確認してください。
  4. また、(文字列)「true」と「false」がjsonでサポートされているかどうかもわかりません。[NSNumberinitWithBool:YES / NO]に設定する必要があります。または、SBJsonWriterを使用してjson文字列に適切にエンコードすることもできます。

サーバーがそのエラーを送信している理由を確認するのが最善です。サーバーログを確認できます。

于 2012-05-24T07:08:40.283 に答える