Как передать параметр @POST в модификацию? [Дубликат]

В основном функция mail() отключена на общем хостинге. Лучше использовать SMTP. Лучшим вариантом будет Gmail или SendGrid.


SMTPconfig.php

<?php 
    $SmtpServer="smtp.*.*";
    $SmtpPort="2525"; //default
    $SmtpUser="***";
    $SmtpPass="***";
?>

SMTPmail.php

<?php
class SMTPClient
{

    function SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body)
    {

        $this->SmtpServer = $SmtpServer;
        $this->SmtpUser = base64_encode ($SmtpUser);
        $this->SmtpPass = base64_encode ($SmtpPass);
        $this->from = $from;
        $this->to = $to;
        $this->subject = $subject;
        $this->body = $body;

        if ($SmtpPort == "") 
        {
            $this->PortSMTP = 25;
        }
        else
        {
            $this->PortSMTP = $SmtpPort;
        }
    }

    function SendMail ()
    {
        $newLine = "\r\n";
        $headers = "MIME-Version: 1.0" . $newLine;  
        $headers .= "Content-type: text/html; charset=iso-8859-1" . $newLine;  

        if ($SMTPIN = fsockopen ($this->SmtpServer, $this->PortSMTP)) 
        {
            fputs ($SMTPIN, "EHLO ".$HTTP_HOST."\r\n"); 
            $talk["hello"] = fgets ( $SMTPIN, 1024 ); 
            fputs($SMTPIN, "auth login\r\n");
            $talk["res"]=fgets($SMTPIN,1024);
            fputs($SMTPIN, $this->SmtpUser."\r\n");
            $talk["user"]=fgets($SMTPIN,1024);
            fputs($SMTPIN, $this->SmtpPass."\r\n");
            $talk["pass"]=fgets($SMTPIN,256);
            fputs ($SMTPIN, "MAIL FROM: <".$this->from.">\r\n"); 
            $talk["From"] = fgets ( $SMTPIN, 1024 ); 
            fputs ($SMTPIN, "RCPT TO: <".$this->to.">\r\n"); 
            $talk["To"] = fgets ($SMTPIN, 1024); 
            fputs($SMTPIN, "DATA\r\n");
            $talk["data"]=fgets( $SMTPIN,1024 );
            fputs($SMTPIN, "To: <".$this->to.">\r\nFrom: <".$this->from.">\r\n".$headers."\n\nSubject:".$this->subject."\r\n\r\n\r\n".$this->body."\r\n.\r\n");
            $talk["send"]=fgets($SMTPIN,256);
            //CLOSE CONNECTION AND EXIT ... 
            fputs ($SMTPIN, "QUIT\r\n"); 
            fclose($SMTPIN); 
            // 
        } 
        return $talk;
    } 
}
?>

contact_email.php

<?php 
include('SMTPconfig.php');
include('SMTPmail.php');
if($_SERVER["REQUEST_METHOD"] == "POST")
{
    $to = "";
    $from = $_POST['email'];
    $subject = "Enquiry";
    $body = $_POST['name'].'</br>'.$_POST['companyName'].'</br>'.$_POST['tel'].'</br>'.'<hr />'.$_POST['message'];
    $SMTPMail = new SMTPClient ($SmtpServer, $SmtpPort, $SmtpUser, $SmtpPass, $from, $to, $subject, $body);
    $SMTPChat = $SMTPMail->SendMail();
}
?>
29
задан Harikrishnan 28 April 2016 в 06:16
поделиться

5 ответов

Попробуйте использовать

public interface SafeUserApi {
 @FormUrlEncoded
    @POST("/api/userlogin")
    void getUserLogin(
            @Field("client_id") String id,
            @Field("client_secret") String secret,
            @Field("username") String uname,
            @Field("password") String password,
            Callback<LoginResult> cb
    );
}

Здесь parm1 - это параметр POST, который вы передадите ему на сервер. Это решит вашу проблему

, если вы используете PHP, и можете получить доступ к параметру с помощью $uname= $_POST('username');

EDIT 1:

версия для версии 2.0:

public interface SafeUserApi {
    @FormUrlEncoded
    @POST("/api/userlogin")
    Call<ResponseBody>  getUserLogin(
            @Field("client_id") String id,
            @Field("client_secret") String secret,
            @Field("username") String uname,
            @Field("password") String password
    );
}
53
ответ дан alexgophermix 22 August 2018 в 11:27
поделиться
  • 1
    я попытался, но это не сработает. – Dipen Patel 10 February 2015 в 08:30
  • 2
    можете ли вы вставить трассировку стека в pastebin и поделиться ссылкой здесь? – Gowtham Raj 10 February 2015 в 08:31
  • 3
    Я отредактировал ответ, пожалуйста, попробуйте этот – Gowtham Raj 10 February 2015 в 08:42
  • 4
    Я обновил вопрос с трассировкой стека. – Dipen Patel 10 February 2015 в 08:42
  • 5
    Я думаю, что вы можете использовать @FormUrlEncoded без проблем – Gowtham Raj 1 May 2015 в 06:56

Я получил эту ошибку сегодня

("retrofit.RetrofitError: com.squareup.okhttp.internal.http.HttpMethod.METHODS")

Проблема в том, что я использовал разные версии okhttp и okhttp-urlconnection, поэтому убедитесь, что они совпадают.

3
ответ дан Anirudh Sharma 22 August 2018 в 11:27
поделиться
  • 1
    Спасибо! Это спасло мне жизнь, я подумал, что мне придется обновиться до Retrofit 2. У меня возникла ошибка, например, retrofit.RetrofitError: No field METHODS, и это исправлено. – Sheepdogsheep 23 November 2016 в 17:12

«JSON CONVERSION

Retrofit использует Gson по умолчанию для преобразования тел HTTP в JSON и из него. Если вы хотите указать поведение, отличное от по умолчанию Gson (например, политики именования, форматы дат, пользовательские типы) , создайте новый экземпляр Gson с желаемым поведением при создании RestAdapter. Подробнее о настройке см. в документации Gson. "

См. ссылку для получения дополнительной информации: http://square.github.io/retrofit/

1
ответ дан Kevin Crain 22 August 2018 в 11:27
поделиться
  • 1
    Я уже пробовал с параметром поля. @FormUrlEncoded @POST («/api/0.01/oauth/access_token/") // ваша функция входа в ваш публичный вход void vi (@Field (« client_id ») String client_id, @Field (« client_secret ») String client_secret, @Field («имя пользователя»). Имя пользователя String, @Field («пароль»). Строковый пароль, Callback & lt; String & gt; calback); – Dipen Patel 10 February 2015 в 08:41

Вы также можете передать несколько параметров поля: например:

@FormUrlEncoded
@POST("/oauth/access_token")
void getToken(
    @FieldMap Map<String, String> params, 
    Callback<FacebookLoginUserResponse> callback
);
8
ответ дан Ramkailash 22 August 2018 в 11:27
поделиться

Версия Retrofit 2.0:

@FormUrlEncoded
@POST("api/v2/users/sign_in")
Call<SignInResult> userSignIn(
        @FieldMap HashMap<String, String> authData
);
3
ответ дан Robert 22 August 2018 в 11:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: