You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 11:46:08