0

私はこのコードを持っています:

    request.HTTPMethod = @"POST";
    NSString *postString = [@"content=" stringByAppendingString:@"stuff here"];
    request.HTTPBody = [postString dataUsingEncoding:NSUTF8StringEncoding];
    [request setValue:[[NSNumber numberWithInt:[postString length]] stringValue] forHTTPHeaderField:@"Content-Length"];
    [request setValue:@"application/x-www-form-urlencoded" forHTTPHeaderField:@"Content-Type"];

    NSError *requestError;
    NSURLResponse *urlResponse = nil;

    NSData *resp = [NSURLConnection sendSynchronousRequest:request returningResponse:&urlResponse error:&requestError];
    NSLog(@"%@", [[NSString alloc] initWithBytes:[resp bytes] length:[resp length] encoding:NSUTF8StringEncoding]);

content=some stuff を含む投稿リクエストを送信する予定です

しかし、代わりに、サーバーは GET を取得したかのように動作します。なにが問題ですか?

これが私のサーバー側のコードです(ruby、sinatra、heroku)

get '/messages' do
    @messages = Message.all
    erb :messages
end

get '/messages/:id' do
    Message.find(params[:id]).content
end

post '/messages' do
    @content = Message.new({:content => params[:content]})
    RestClient.post API_URL+"/messages", 
        :from => "idoor@idoor.heroku.com",
        :to => "drew.a.gross@gmail.com",
        :subject => "New Message from iDoor!",
        :html => @content.content
    @content.save
    @content.content
end

サーバー上のログファイルは次のとおりです。何が起こっているのか正確にはわかりません。POST と GET があるようです。

2013-09-16T06:41:37.482489+00:00 heroku[router]: at=info code=H16 desc="herokuapp redirect" method=POST path=/messages host=idoor.heroku.com fwd="129.97.131.0, 127.0.0.1" dyno= connect= service= status=301 bytes=
2013-09-16T06:41:37.741972+00:00 app[web.1]: 129.97.131.0 - - [16/Sep/2013 06:41:37] "GET /messages HTTP/1.1" 200 398 0.0850
2013-09-16T06:41:37.747154+00:00 heroku[router]: at=info method=GET path=/messages host=idoor.herokuapp.com fwd="129.97.131.0" dyno=web.1 connect=0ms service=95ms status=200 bytes=398
4

1 に答える 1

0

まず、投稿本文をパーセント エンコーディング (UTF-8 ではなく) を使用してエンコードする必要があります。

第二に、あなたのサーバーが何か間違ったことをしている可能性を考慮しましたか. サーバー側のコードを投稿できますか?

于 2013-09-16T06:11:40.033 に答える