

現在、Mastodonへ画像を投稿するプログラムを組んでいるのですが、下記の投稿のものを参考に組みましたが  
<http://qiita.com/aryzae/items/8c16bc456588c1251f48#_reference-32d9e31807ff872c27f8>  
送る際は、85406 bytesのデータ量を確認しているのですが受信が0bytesと表示され悩んでいます。  
本来であれば、json形式で幾らかの受信があるはずなのですが・・・  
本家のGitHubのAPI一覧を拝見し(クロームで翻訳)、解決できずに困っています。

よろしくお願いします。

[code]

        func testToot(){
            let session = URLSession.shared
            let i = Item()
            let url = URL(string:"https://pawoo.net/api/v1/media")!
            let param:[String:String] = ["access_token":i.getItem(clum: "access_token") as! String]
    
    
            let image:Data = UIImageJPEGRepresentation(UIImage(named:"a.jpg")!,0.8)! as Data
            let boundary = "Boundary-\(NSUUID().uuidString)"
            var req = URLRequest(url:url)
            req.httpMethod = "POST"
            req.addValue("application/json", forHTTPHeaderField: "Content-Type")
            req.addValue("multipart/form-data;boundary=\(boundary)",forHTTPHeaderField:"Content-Type")
    
            req.httpBody = createBody(_param: param, _key:"file", imageData: image, _boundary: boundary)
    
            let task = session.dataTask(with: req,completionHandler:{data,response,error in do{
                print(response!)
                }
            })
            task.resume()
        }
    
    
        func createBody(_param:[String:String],_key:String,imageData:Data,_boundary:String)->(Data){
            let file = "a.jpg"
            let type = "image/jpeg"
            var body = Data();
                for(key,val) in _param {
                    body.append("--`\(_boundary)\r\n")
                    body.append("Content-Disposition:form-data; name=\(key)")
                    body.append("\(val)\r\n")
                }
            body.append("--\(_boundary)\r\n")
            body.append("Content-Disposition: form-data;name=\"\(_key)\"; filename=\"\(file)\"\r\n")
            body.append("Content-Type \(type)\r\n\r\n")
            body.append(imageData)
            body.append("r\n")
            body.append("--\(_boundary)--\r\n")
            return body
        }
    }
    extension Data{
        mutating func append(_ str:String){
            let data = Data(str.utf8)
            return self.append(data)
        }
    }
    
[/code]

responseの中身

[code]

     { URL: https://pawoo.net/api/v1/media } { status code: 400, headers {
        "Content-Length" = 0;
        "Content-Type" = "text/html; charset=utf-8";
        Date = "Fri, 12 May 2017 12:44:39 GMT";
        Vary = Origin;
        "x-request-id" = "aasf0bb-fb82-45c1-34d0-676ffc1aww15";
        "x-runtime" = "0.155211";
    } }
    
[/code]


CC BY-SA 3.0
2017-05-11T19:50:30.993
34645
2017-08-21T10:07:52.420
2017-05-12T12:50:22.563
20049
20049
question
swift3
マストドンへ画像を送る


気になった点をいくつか挙げてみます。

  * testToot 内で Content-Type を 2回指定している。
  * createBody 内、boundary に backquote(`) が混入している。
  * Content-Disposition の最後に `\r\n\r\n` がない。
  * Content-Type の後に `:` がない。
  * `\r` であるはずのところ、`r` となっている。


CC BY-SA 3.0
2017-05-12T14:41:29.070
34667
2017-05-12T14:41:29.070
5288
34645
answer