Comments (2)
Solved, I set it with wrong MIME type.
Thanks for you help!
from apikit.
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 bytry! 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)
- Does JSONBodyParameters support nested json? HOT 1
- 'NSInvalidArgumentException', reason: '*** -propertyForKey: only defined for abstract class HOT 1
- How to send request a nest JSON
- how to make request with body parameters json inside json HOT 1
- JSONBodyParameters - Protect adding extra escapes by JSONSerialization.data HOT 1
- Swift4.2 support HOT 6
- How about using a private queue as default callback queue?
- How to update json in BodyParameters HOT 4
- The specs repo latest version is 4.1.0,not 5.0.0 HOT 2
- [question] Was develop/4.0 branch abandoned? HOT 4
- Executing multipart request on same Part instance can cause waiting reading eternally
- Enable Swift 5.1's module stability
- [Q] `xcodebuild` with Swift Package Failed HOT 6
- There is an inconsistency in the PBXGroup references. HOT 1
- how to run Demo.playground? HOT 1
- where to write my common encrypt code
- This library isn't secure by default. It should have the option to set the URLConfiguration to ephemeral.
- Build failed with Xcode14.3
- Swift Concurrency warning
- Any support of Privacy Manifest?
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from apikit.