首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么客户端总是从localhost GO中接收到“传输:收到意外的内容类型”,从而编写了GRPC服务。

为什么客户端总是从localhost GO中接收到“传输:收到意外的内容类型”,从而编写了GRPC服务。
EN

Stack Overflow用户
提问于 2018-11-18 12:39:57
回答 1查看 2.5K关注 0票数 2

我刚刚从微型/go-grpc克隆了示例代码,并试图在本地主机中构建一个grpc服务器。

代码语言:javascript
复制
proto file 

syntax = "proto3";

package go.micro.srv.greeter;

service Say {
    rpc Hello(Request) returns (Response) {}
}

message Request {
    string name = 1;
}

message Response {
    string msg = 1;
}

服务器/主机。

代码语言:javascript
复制
package main

import (
    "context"
    "log"

    "github.com/micro/go-micro"
    "github.com/micro/go-grpc"
    hello "github.com/micro/go-grpc/examples/greeter/server/proto/hello"
)

type Say struct{}

func (s *Say) Hello(ctx context.Context, req *hello.Request, rsp 
*hello.Response) error {
    log.Print("Received Say.Hello request")
    rsp.Msg = "Hello " + req.Name
    return nil
}

func main() {
    service := grpc.NewService(
        micro.Name("go.micro.srv.greeter"),
    )

// optionally setup command line usage
service.Init()

// Register Handlers
hello.RegisterSayHandler(service.Server(), new(Say))

// Run server
if err := service.Run(); err != nil {
    log.Fatal(err)
    }
}

客户/主机。

代码语言:javascript
复制
package main

import (
    "context"
    "fmt"

    "github.com/micro/cli"
    "github.com/micro/go-grpc"
    hello "github.com/micro/go-grpc/examples/greeter/server/proto/hello"
    "github.com/micro/go-micro"
)

var (
    // service to call
    serviceName string
)

func main() {
    service := grpc.NewService()

    service.Init(
        micro.Flags(cli.StringFlag{
            Name:        "service_name",
            Value:       "go.micro.srv.greeter",
            Destination: &serviceName,
        }),
    )

    cl := hello.NewSayService(serviceName, service.Client())

    rsp, err := cl.Hello(context.TODO(), &hello.Request{
        Name: "John",
    })
    if err != nil {
        fmt.Println(err)
        return
    }

    fmt.Println(rsp.Msg)
}

我的操作系统是MacOsX,go版本是1.11.1

当我运行服务器端示例代码时,一切看起来都很好:

代码语言:javascript
复制
$ go run ./main.go --server_address:localhost:9999
2018/11/18 20:08:05 Listening on 127.0.0.1:9999
2018/11/18 20:08:05 Broker Listening on [::]:62739
2018/11/18 20:08:05 Registering node: go.micro.srv.greeter-9b2818b0-eb2a-11e8-bfef-720008acb800

但是,如果我运行客户端示例代码,总是会收到:

代码语言:javascript
复制
{"id":"","code":0,"detail":"transport: received the unexpected content-type "text/plain"","status":""}

我试图删除--server_address,但仍然保持原样。我试图添加mdns注册表,但也不起作用。我尝试使用$ micro health go.micro.srv.greeter,它返回了相同的结果。

想知道我的设计有什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2021-07-26 16:57:16

我只是得到了同样的错误,因为我指向了错误的端口。我确信我的设置与您的不同,这是一个不同的问题,但问题是,我试图向http服务器发出一个GRPC请求,该服务器返回了一个404 not,其中包含了html的内容类型“text/平原”。如果您在删除服务器地址时遇到了同样的问题,那么很可能您没有正确地读取param,或者您设置的值仍然指向一个有http服务器而不是GRPC服务器的位置。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53360973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档