m_shige1979のときどきITブログ

プログラムの勉強をしながら学習したことや経験したことをぼそぼそと書いていきます

Github(変なおっさんの顔でるので気をつけてね)

https://github.com/mshige1979

FaceApiを試す。(ローカルよりファイルをアップロードして結果を取得)

基本的にはURLを指定するサンプルしかない

ので探していろいろやってみた。

実装

sample2.go
package main

import (
    "log"
    "net/http"
    "bytes"
    "io/ioutil"
)

func main() {
    key1 := "生成したキー"
    jpegData, _ := ioutil.ReadFile("face.jpg")

    // EndPoint
    endPoint := "https://eastasia.api.cognitive.microsoft.com/face/v1.0"

    // params
    paramStr := "/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender,glasses"

    // URL
    url := endPoint + paramStr
    log.Println(url)

    req, err := http.NewRequest("POST", url, bytes.NewBuffer(jpegData))
    if err != nil {
        log.Fatal("Request:", err)
        return
    }

    req.Header.Set("Content-Type", "application/octet-stream")
    req.Header.Set("Ocp-Apim-Subscription-Key", key1)

    httpClient := &http.Client{}

    resp, err := httpClient.Do(req)
    if err != nil {
        log.Fatal("Do: ", err)
        return
    }

    defer resp.Body.Close()

    byteArray, _ := ioutil.ReadAll(resp.Body)
    log.Println(string(byteArray))

}

2017/11/05 23:02:03 https://eastasia.api.cognitive.microsoft.com/face/v1.0/detect?returnFaceId=true&returnFaceLandmarks=false&returnFaceAttributes=age,gender,glasses
2017/11/05 23:02:04 [{"faceId":"b28efd98-47db-460f-8556-d1882565d4a9","faceRectangle":{"top":156,"left":173,"width":178,"height":178},"faceAttributes":{"gender":"male","age":33.8,"glasses":"NoGlasses"}}]

必要なこと

application/octet-streamを送信

image/jpegなどではエラーが帰ってきた

所感

クライアントからファイルを送信するサンプルがなかなか見つからない感じ
ファイルの送信する方法はまだ調べないといけない感じ…