Git Product home page Git Product logo

Comments (2)

futantan avatar futantan commented on June 14, 2024 2

Solved, I set it with wrong MIME type.
Thanks for you help!

from apikit.

ishkawa avatar ishkawa commented on June 14, 2024 1

Hi @futantan, thank you for reporting this issue 👍

I build local server and check the HTTP request in version 2.0.5.

Test code

HTTP request is implemented as below, which is almost the same as yours.

class FooTests: XCTestCase {
    struct UploadAvatar: RequestType {
        typealias Response = Any

        var baseURL: NSURL {
            return NSURL(string: "http://localhost:1234")!
        }

        var path: String {
            return "/image"
        }
        
        var method: HTTPMethod {
            return .PUT
        }
        
        var bodyParameters: BodyParametersType? {
            return MultipartFormDataBodyParameters(parts: [MultipartFormDataBodyParameters.Part(data: imageData, name: "avatar", fileName: "avatar")])
        }
        
        func responseFromObject(object: AnyObject, URLResponse: NSHTTPURLResponse) throws -> Response {
            return object
        }
        
        let imageData: NSData
    }

    func testFoo() {
        let url = NSURL(string: "file:///Users/ishkawa/Desktop/foo.jpg")!
        let data = NSData(contentsOfURL: url)!
        let request = UploadAvatar(imageData: data)
        Session.sendRequest(request) { result in
            print(result)
        }
    }
}

The local server is implemented as below (written in golang):

// usage: go run main.go
package main

import (
	"fmt"
	"net/http"
	"net/http/httputil"
)

func ImageHandler(w http.ResponseWriter, r *http.Request) {
	bytes, err := httputil.DumpRequest(r, true)
	if err != nil {
		http.Error(w, err.Error(), http.StatusInternalServerError)
		return
	}

	fmt.Println(string(bytes))

	w.WriteHeader(http.StatusOK)
}

func main() {
	http.HandleFunc("/image", ImageHandler)
	http.ListenAndServe(":1234", nil)
}

Test result

The server received following HTTP request:

PUT /image HTTP/1.1
Host: localhost:1234
Accept: application/json
Accept-Encoding: gzip, deflate
Accept-Language: en-us
Connection: keep-alive
Content-Length: 1081
Content-Type: multipart/form-data; boundary=0dc8dc0f4d88971f
User-Agent: xctest (unknown version) CFNetwork/807.1.3 Darwin/16.1.0 (x86_64)

--0dc8dc0f4d88971f
Content-Disposition: form-data; name="avatar"

����JFIFHH���ExifMMJR(�iZHH��
�
��8Photoshop 3.08BIM8BIM%��ُ��	���B~��

"��

���}!1AQa"q2��#B��R��$3br�
%&'()*456789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz���������������������������������������������������������������������������

���w!1AQaq"2B����	#3R�br�
$4�%�&'()*56789:CDEFGHIJSTUVWXYZcdefghijstuvwxyz��������������������������������������������������������������������������C











��C
����
    ?����?���~	�J�4��w�Q�k>�aq1�DP
                                   �Ls(�a��
�B>e�U��u-&��/���%K�r<������Nr9<����a|9��F�����5���^�,����I#�^I31RI1�!'����
����cX��B$hUP0���
--0dc8dc0f4d88971f--

As the result indicates, Content-Type of this HTTP request is multipart/form-data; boundary=0dc8dc0f4d88971f, and Content-Disposition is form-data; name="avatar".

Next step

I need more information to identify the issue, such as:

  • NSURLRequest which is returned by try! request.buildURLRequest().
  • Entire HTTP request dump like I pasted above.

FYI, to tell specify MIME type of part explicitly, specify the mimeType: value as MultipartFormDataBodyParameters.Part(data: imageData, name: "avatar", mimeType: "image/jpeg", fileName: "avatar").

from apikit.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.