【问题标题】:JSON POST works fine in Poster/HTTP Client(Mac) but not from iOS app in XCodeJSON POST 在 Poster/HTTP Client(Mac) 中运行良好,但在 XCode 中的 iOS 应用程序中运行良好
【发布时间】:2012-05-24 06:04:22
【问题描述】:

我正在尝试将 JSON 内容发布到 Web 服务。它在 POSTER(firefox 插件)和 HTTP Client (Mac) 上运行良好,但在尝试从 XCode(iOS 应用程序)发布时抛出 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 错误的修复。

【问题讨论】:

    标签: ios json httprequest xcode4.3


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      但是请检查以下内容。

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

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

      【讨论】:

      • "true"/"false" 正在被接受。正如我所提到的,该请求适用于除 XCode 之外的所有内容。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-11-16
      • 2020-03-05
      • 2015-06-22
      • 1970-01-01
      • 2012-01-18
      • 1970-01-01
      • 2014-12-25
      相关资源
      最近更新 更多