如何在Swift中通过Socket.io向服务器发送与Postman格式一致的数据
解决Swift发送Socket数据格式匹配Postman的问题
问题原因
你当前的CustomData实现虽然返回了正确的字典结构,但在emit方法中传递CustomData实例时,Socket.io客户端可能会对其进行额外包装,导致最终发送的JSON结构和Postman的不一致。
解决方案
方案1:直接发送字典(推荐)
去掉自定义的CustomData结构体,直接在emit时传入符合格式的字典:
self.socket!.on(clientEvent: .connect) { data, ack in print("Socket Connected") if self.socket!.status == .connected { let payload = ["topics": topicList] self.socket?.emit("topics", payload, completion: { print(payload) print("Completed") }) } }
方案2:调整CustomData的调用方式(若需保留结构体)
如果仍想使用CustomData,直接传递其socketRepresentation()的返回值,而非结构体实例:
self.socket!.on(clientEvent: .connect) { data, ack in print("Socket Connected") if self.socket!.status == .connected { let customData = CustomData(topics: topicList) self.socket?.emit("topics", customData.socketRepresentation(), completion: { print(customData) print("Completed") }) } }
验证方法
可以用抓包工具(如Charles)查看Swift客户端发送的请求体,确认JSON结构与Postman一致:
{ "topics": ["UUID78912","UUID87681"] }
内容的提问来源于stack exchange,提问作者AbheshekSharma
相关产品推荐
相关产品推荐

