0

我正在尝试将 JSON 内容发布到 Web 服务。它在 POSTER(firefox 插件)和HTTP 客户端(Mac)上运行良好,但在尝试从 XCode(iOS 应用程序)POS​​T 时抛出 500-Internal Server Error。有人可以帮我解决这个问题。

请求详细信息是:-

HTTP 方法:POST

内容类型:应用程序/json

HTTP 正文:

{
  "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"
}

编辑:已解决请参阅下文以修复我的 noobish 错误。

4

2 回答 2

1

我现在可以成功发送请求了。我以错误的方式构建 HTTP 请求对我来说很糟糕。

解决方案:使用setValue:forHTTPHeaderField:不是 setValue:forKey:用于 http 标头,例如“Content-Type”、“Content-Length”等。

我在想只要密钥是唯一的,我们是否使用它们中的任何一个都没有关系。但我错了

于 2012-05-24T07:43:56.053 回答
0

除非您发布实际代码,否则很难回答您的问题。

但是检查以下内容。

  1. 您必须使用 MSMutableRequest 并将 HTTPMethod 设置为 @"POST"
  2. 确保将标头 Content-Type 设置为“Application/json”(您已经提到您已经这样做了)
  3. 确保将 Content-Length 设置为 jsonstring 的字符串长度。
  4. 另外我不确定json是否支持(字符串)“true”和“false”,它应该设置为[NSNumber initWithBool:YES/NO],或者您可以使用SBJson Writer正确编码为json字符串。

最好是看看你的服务器为什么会发送那个错误。您可以检查您的服务器日志。

于 2012-05-24T07:08:40.283 回答