当前位置: 首页 > 知识库问答 >
问题:

为什么我的Go服务器不能读取Swift帖子?

岑叶秋
2023-03-14

我一直在尝试打印和HTTP post使用Swift的一个移动应用程序,我可以用javascript和express登录它。js。但当使用Go创建的服务器时,它会给我:

Get "http://192.121.1.397:8080": dial tcp http://192.121.1.397:8080: i/o timeout
exit status 1

下面你可以看到所有3种语言的代码:

斯威夫特:

import Foundation


class Service: NSObject {
    static let shared = Service()
    
    func fetch(completion: @escaping (Result<[Post], Error>) -> ()){
        guard let url = URL(string: "http://192.121.1.397:8080" ) else{return}
        
        URLSession.shared.dataTask(with: url) { (data, resp, err) in
            if let err = err {
                print(err)
                return
            }
            
            guard let data = data else {return}
            
            do{
                let posts = try JSONDecoder().decode([Post].self, from:data)
                completion(.success(posts))
            } catch{
                completion(.failure(error))
            }
        }
    }
    func post(title: String, body: String, completion: @escaping (Error?) -> ())  {
        guard let url = URL(string: "http://192.168.1.148:8080") else{return}
        var urlReq = URLRequest(url:url)
        urlReq.httpMethod = "POST"
        
        let params = ["title": title, "postBody": body]
        
        do{
            let data = try JSONSerialization.data(withJSONObject: params, options: .init())
            
            urlReq.httpBody = data
            urlReq.setValue("application/json", forHTTPHeaderField: "Content-Type")
            
            URLSession.shared.dataTask(with: urlReq){(data, resp, err) in
                guard let data = data else{return}
                completion(nil)
            }.resume()
        } catch{
            completion(error)
        }
    }
}

在另一个文件的@obj func中调用:

 @objc func ButtonClicked(sender: UIButton)->Void{
      
     
        
      sceneView.allowsCameraControl  = false

        
        if(buttonsArray[sender.tag].nav == false){
        
            if(buttonsArray[sender.tag].name == "News"){
                Service.shared.post(title:"rodo" , body:"aya"){
                    (err) in
                    if let err = err{
                        print(err)
                        return
                    }
                    print("posted")
                }
}

戈朗代码:

package main

import (
    "fmt"
    "os"
    "io/ioutil"
    "log"
    "net/http"
)


func main() {
    http.HandleFunc("/", HelloServer) // deal
    http.ListenAndServe(":8080", nil)
   
}

func HelloServer(w http.ResponseWriter, r *http.Request) {
    // fmt.Fprintf(w, "Hello, lol") // post

    resp, err := http.Get("http://http://192.121.1.397:8080") //https://api.github.com/repos/dotcloud/docker

if err != nil{
    fmt.Println("now")
    log.Fatal(err)
}

defer resp.Body.Close()

body, err := ioutil.ReadAll(resp.Body)

if err != nil{
    fmt.Println("here")
    log.Fatal(err)
}

_, err = os.Stdout.Write(body)
// _, err = fmt.Println(string(body))

if err != nil{
    fmt.Println("There")
    log.Fatal(err)
}
}

可以阅读文章的Javascript服务器:

const express = require('express')
const app = express()
var bodyParser = require('body-parser')
const port = process.env.PORT || 8080
;
app.use(bodyParser.urlencoded({ extended: true }))

// parse application/json
app.use(bodyParser.json())


app.get('/', (req, res) => {
    res.send({ express: 'YOUR EXPRESS BACKEND IS CONNECTED TO REACT' })
   
}
)


app.post('/', function(req, res) {
    var parsedBody = req.body;
    console.log(parsedBody)
    res.send({ express: 'YOUR EXPRESS BACKEND IS CONNECTED TO REACT' })

 });




app.listen(port, () => console.log(`Example app listening on port ${port}!`))

谢谢你抽出时间

共有1个答案

储仲渊
2023-03-14

...... http. get("超文本传输协议://http://192.121.1.397:8080")

这不是有效的URL。它应该只有http://192.121.1.397:8080

除此之外,我真的不确定你在做什么。为什么要尝试在同一服务器的处理程序中访问服务器?这也不同于在nodejs中所做的,在nodejs中只发送一个简单的响应。

 类似资料:
  • 我是完全新的Web API的,并试图建立一个Android应用程序观看谷歌联系人。我被Oauth的第一步卡住了。我已经完成了登录按钮和授权。按钮工作正常,我可以登录我的谷歌账户,但当我试图从这个账户获得一些东西时,日志猫打印了这个按摩“I/System_Server:oneway函数结果将被删除,但以状态OK和包裹大小结束”。为什么会这样?因为auth令牌不再有效?如何恢复权限?我应该如何从帐户获

  • 我正在使用Netbeans在我的php服务器上工作。当我尝试上传我的项目时,没有错误,但文件在服务器上保持不变。 示例:我在css中将高度从10%改为7%并上传。没有错误发生,但高度在现场保持不变。 220 ProFTPD 1.3.5服务器(Debian)[::FFFF:###.###.##.#####] 用户####### #######需要331密码 230用户#######登录 I型 200

  • 问题内容: 我有几个令人难以置信的基本HTTP服务器,而且所有这些服务器都存在此问题。 并发值较小时,事情仍然会失败。对我来说,这个问题似乎通常出现在5k-6k大关附近: 实际上,您可以完全放弃并发性,问题仍然存在(有时): 我忍不住想知道是否在某处达到某种操作系统限制?我怎么知道 我该如何缓解? 问题答案: 简而言之,您的端口已用完。 osx上的默认临时端口范围是49152-65535,只有16

  • 好吧,所以我决定学习一些代码的乐趣,并遵循一个简单的你好命令的教程。我使用server.pro来运行服务器来测试我的插件,最初是在JavaSE-15和Spigot 1.16.5中编码的。当我上传jar文件时,它不会显示在服务器上的 /plugins列表中。我可以选择运行服务器的java,并意识到它只升到Java11,所以我用Spigot 1.16.5的JavaSE-11系统库重新编码了它。无论我做

  • 我正在使用Reverfit2,我试图从我用Python制作的Web服务中请求一些数据。 实际上,它抛出了一个“java.lang.IllegalStateException”,但是当我调用GET方法时,API返回代码200,而且我还可以看到用于调试响应JSON的打印版本。问题是Call方法,因为它总是在failure时执行。 求求你,救命! 这是我的(简单的)Python Web服务,API-Pr

  • 我已经将“mytest.html”发送到IIS上,这个项目由WebApi Angularjs组成,我无法获得对我的WebApi的正确请求……我不知道为什么? 超文本标记语言代码 【WebApi代码】 [模型代码] 【注册代码】 请注意,我的google chrome控制台中的错误是: 有棱角的js:10695职位http://localhost:60031/api415(不支持的媒体类型) 我也尝