-1

拥有一个简单的 GO WebServer,它接受图像作为 POST 请求的一部分。

代码片段 - 请求被映射到这个函数

 func UploadFile(w http.ResponseWriter, r *http.Request, p httprouter.Params) {
        successResponse := models.HTTPResponse {
            FileURL:"http://testing.com",
        }
        WrapResponse(w, successResponse, http.StatusOK)
    }

响应编写器功能

func WrapResponse(writer http.ResponseWriter, content interface{}, status int) {    
    writer.Header().Set("Content-Type", "application/json")
    writer.WriteHeader(status)
    // Content is a struct Response { fileURL string }  
    responseJson, err := json.Marshal(content)  
    CheckError(err, "Error wrapping response")  
    writer.Write(responseJson) 
    }

    func CheckError(err error, msg string) {    
    if err != nil {         
    panic(fmt.Sprintf("%s : %s", msg, err))     
    } 
    }

当我使用 cURL 如下所示点击 URL 时,响应为 200 OK(如预期的那样)

curl -X POST -d@ "屏幕截图 2015-11-15 at 6.09.58 pm.png" http://localhost:8000/image/agent123/property --header "Content-Type:image/png" -- header "X-User-Agent:agent-php" 响应 -->{"fileURL":" http://testing.com "}%

整个 cURL 请求和响应 详细

但是,当我从 DHC 休息客户端尝试相同的操作时,也尝试过高级休息客户端没有响应。

通过 DHC 的相同请求

编辑 1:从其他客户端触发时,请求确实到达服务器

4

1 回答 1

-1

我不相信你在做你认为的那样。

curl -X POST -d "Screen Shot 2015-11-15 at 6.09.58 pm.png" http://localhost:8000/image/agent123/property --header "Content-Type:image/png" --header "X-User-Agent:agent-php" 

不会发送文件“Screen Shot 2015-11-15 at 6.09.58 pm.png”,将文字文本作为正文发送是很麻烦的。您可能想要“-d @'Screen Shot 2015-11-15 at 6.09.58 pm.png'”。

那么你的“好”结果并不完全好,所以你必须弄清楚服务器接收端的错误是什么。由于您使用的 GUI 客户端可能正在发送文件,而 cURL 不是。而且您的后端似乎接受文本,而不是文件。

于 2015-11-15T17:31:08.650 回答